Showing posts with label DataSet. Show all posts
Showing posts with label DataSet. Show all posts

Saturday, July 30, 2011

LINQ und Datatables

allgemeine (untypisierte) Datatable
var res = from x in dt.AsEnumerable() select x.Field(c.ColumnName);

join zweier typisierter Datasets:
var rsInner = from s in dtSource
join c in dtComp on s.FullName equals c.FullName
where s.Nullable!=c.Nullable || s.MaxLength!=c.MaxLength || s.Type!=c.Type
select new { s.TableName, s.ColumnName,
s.Nullable, cNullAble = c.Nullable,
s.MaxLength, cMaxL = c.MaxLength,
s.Type, cType = c.Type};

Tuesday, July 26, 2011

typed Dataset Null Werte

Um Null Werte abzufragen verwendet man die IsXXXNull() Methode der typed Datarow Instanzen, um Null Werte zu schreiben die SetXXXNull() Methode , wobei XXX der Feldname ist.

z.b.:

DsCRM.tTextNmDataTable dtTextNm = new DsCRM.tTextNmDataTable();
DsCRM.tTextNmRow drTextNm = dtTextNm.NewtTextNmRow();
drTextNm.ChildId = dr.Id;
drTextNm.ParentId = (int)dt.ExtendedProperties[C.ParentId];
drTextNm.Created = DateTime.UtcNow;
drTextNm.CreatedBy = Data.WinUserName;
drTextNm.SetValidUntilNull();
drTextNm.IsValidUntilNull();

Thursday, September 02, 2010

Rapid GUI Development mit VS2008 & Datasets

Vorgehensweise:
===============
1) fertiges Datenbank Design
2) Vs2008/Menü Data / Add New Datasource / Tabeeln, Views Functions 6 Stored Proc. aussuchen
3) einstellen ob Tabellen / Detailansicht und mittels Drag & Drop die Datatabels aus dem Dataset in den Windows Forms Designer ziehen
4) Namen der generierten Tableadapter, BindingSource eventuell anpassen, Shortcut für Datatables erstellen
5) Spalten der Datagrids Formatieren
6) anpassen des generierten Codes

Was wird generiert ?
====================
1) Datenbankobjekte -> Dataset ziehen:
generiert Tableadapter und Datatable pro Tabelle / SotredProc oder Function
2) Datatables aus dem Dataset -> Formular ziehen:
genereirt Instanz des Datasets, Tableadapter+tableAdapterManager, Bindingsource, bindingsourceNavigator, toolstrip + Datagridview / einzelne Controls für Felder

Was bringt das ?
================
Der Columndesigner des Datasets erspart viel Tipparbeit, die generierten Datenzugriffselemente müssen meist händisch angepasst werden ...

Wednesday, September 01, 2010

Dataset und TableAdapter generieren und updaten

Um Datasets von einer bestehenden Datenbank zu erzeugen, einfach im Visual Studio im Menü Data "Create New Datasource" auswählen. Ein Wizard frägt die Datenbankverbindung ab, dann kann man auswählen welcehe Tabellen, Views und Functions/StoredProcedures man im Dataset haben möchte (bei Lightswitch gehen nur Tabellen und Views derzeit).
Dann werden für die ausgewählten Einträge DataTables und TableAdapter (zum Befüllen) erzeugt. bei Auswahl von Tabellen kann der Dataadapter auch Updates und Deletes sowie INserts machen. bei StoredProc usw. nur Select.
ändert sich an der Definition des Datenbankobjektes etwas, so kann man das im Dataset Designer mit rechter Maustaste auf die Datatable und Configure anpassen. Wenn Tabellendefinitionen geändert werden, ist es wichtig auch alle table valued functions, die darauf passieren anzupassen. Hinzufügen von Feldern ist dem Dataset egal, da es das SQL REsultset und die Dataset Spalten per Name mapped.
Wichtig: Constraint Fehlerkönnen sich sowohl auf Schlüsselverletzungen aber auch Feldconstraint (nicht null, Länge) beziehen, da ist die Fehlermeldung der Tableadapter.Fill Methode sehr unaussagekräftig.

Wednesday, April 07, 2010

Dataset Typ plötzlich unbekannt

manchmal erhält man bei der Arbeit mit typisierten Datasets die Meldung, dass eine typisierte Row nicht mehr bekannt ist. Dann hilft es, im Dataset xsd Designer eine test Tabelle hinzuzufügen, zu kompelieren und dann wieder zu lsöchen - scheinbar schaut der make Prozess nur aufs xsd File und nicht auf das designer.cs file.

Wednesday, March 17, 2010

typisiertes Dataset neu generieren

Wenn man in einem typisierten Dataset Felder hinzufügt oder dessen Eigenschaften ändert, wird öfters mal nicht der Code nue generiert oder es gibt Compiler Fehler beim neu generieren. Abhilfe: Dataset raus aus dem Projekt und wieder hinzufügen oder RunCustom Tool im Solution Explorer auswählen, dann wird der Code neu generiert

Thursday, March 11, 2010

Datarows zwischen Datatables kopieren

Wenn man versucht eine Datarow zu einer anderen Tabelle hinzuzufügen, erhält man die Fehlermeldung, dass diese Datarow eben schon zu einer Tabelle gehört.
Mit Datatable.Import läßt sich eine Datarow mit gleichem Inhalt erzeugen

Saturday, January 09, 2010

Dataset TableAdapter

Beim Erzeugen eines typisierten Datasets durch Drag & drop der Tabellen ins xsd File werden zusätzlich zu den DataTables sogenannte Tableadapter generiert. Wichtig ist dass die tabelle einen Primary Key hat, sonst können keine Update / Delete Commandos für die DataAdapter der TableAdapter erezugt werden (geht auch mit commandbuilder nicht).
wenn Primary key fehlt hinzufügen mittels:
alter table Zeit add constraint TasksPK PRIMARY KEY (GUID)

mit AddQuery aus dem Contextmenü kann man weitere Abfragen, Sps hinzufügen um weitere FillBy... Methoden zu generieren, um z.b. bestimmte Parameter an Fill Sps zu übergeben