vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Blitzschnelles Erstellen von grafischen Diagrammen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Lokales Datatable aus verlinkten Tabelle befüllen 
Autor: dotty
Datum: 18.06.15 19:52

Hallo,

ich lade in meine Anwendung Daten aus einer SQL-DB. Jetzt will ich Daten lokal speichern und habe dazu ein DataTable im xsd-Editor erstellt. Wie kann ich aus einer verlinkten Tabelle Daten in mein lokal erstelltes DataTable kopieren?

Beitrag wurde zuletzt am 18.06.15 um 19:53:14 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Lokales Datatable aus verlinkten Tabelle befüllen 
Autor: effeff
Datum: 19.06.15 14:29

Die Daten, die Du aus der SQL-DB lädst, sind doch dann schon in einer DataTable drin, oder? Dann kannst Du den Inhalt dieser DataTable auch ganz einfach mit

DataTable.WriteXml(Dateiname)
lokal speichern und benötigst keinerlei weitere DataTables etc.

EALA FREYA FRESENA

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Lokales Datatable aus verlinkten Tabelle befüllen 
Autor: dotty
Datum: 19.06.15 16:53

Das klingt nach einer Datei, die außerhalb der Anwendung gespeichert werden muss. Ich will das lokale DataTable als DataSource für ein DataGridView verwenden und die über das DGV eingegebenen Daten auf die SQL-DB speichern. Ich würde ungern dazu auf einen bestimmten Pfad zugreifen müssen.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Lokales Datatable aus verlinkten Tabelle befüllen 
Autor: Manfred X
Datum: 19.06.15 17:00

Hallo!

Erkläre genauer, was Du erreichen willst.
Wieso bindest und editierst Du nicht direkt die aus der DB abgefragte Datatable
und führst danach ein Update durch den TableAdapter aus?
Den Zweck dieses Kopiervorgangs verstehe ich nicht.

Was verstehst Du in diesem Zusammenhang unter dem Begriff "verlinkt"?
Eine Datatable-Instanz, die per Adapter gefüllt worden ist, bleibt von der
Datenbank unabhängig.

(Die Datatable besitzt übrigens eine Clone- und eine Copy-Methode).

Beitrag wurde zuletzt am 19.06.15 um 17:05:33 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Lokales Datatable aus verlinkten Tabelle befüllen 
Autor: dotty
Datum: 19.06.15 17:44

Ich hab auf einer Form 2 datengebundene DGVs sagen wir DGV_1 und DGV_2. Die Daten, die in DGV_2 angezeigt werden, sind von der ausgewählten Zeile in DGV_1 abhängig. In beiden DGVs können Daten eingegeben und erst auf Button-Click gespeichert werden. Ebenfalls auf Button-Click werden in beide DGVs neue Zeilen erzeugt.
Die Idee war eigentlich die neuen Zeilen in das BindingSource-Objekt zu schreiben (s. http://www.vbarchiv.net/forum/id22_i98036t98036_neue-zeile-in-gebundenes-datagridview-einfuegen-und-per-button-in-db-speichern.html) und dann über tableadapter.update zu speichern. Das Problem ist: sobald ich DGV.Refresh ausführe sind alle neuen Daten weg. Daher die Idee als DataSource für die DGVs ein lokales DataTable zu verwenden. Daten aus der DB müssen dann erst in das lokale DT importiert werden. Neue Daten werden über das DGV in das lokale DT eingegeben und beim Speichern werden die Daten aus dem lokalen DT in ein TableAdapter geschrieben.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Lokales Datatable aus verlinkten Tabelle befüllen 
Autor: Manfred X
Datum: 19.06.15 18:17

Eventuell mußt Du nach dem Eintragen neuer Datensätze per Bindingsource
eine der Reset....-Methoden der Bindingsource ausführen, um die Zeile
im Grid angezeigt zu bekommen.
Des weiteren sollte beim Hinzufügen neuer Datensätze per Button
die AllowUserToAddRows-Eigenschaft des DatagridView auf false gesetzt sein.

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Lokales Datatable aus verlinkten Tabelle befüllen 
Autor: dotty
Datum: 22.06.15 15:46

Habe es nun anders geregelt bekommen. Ich hatte den Eindruck, dass die Daten, die man in ein BindingSource hineinschreibt nur solange drin bleiben bis man ein DGV.Refresh ausführt. Dem ist aber nicht so. Ich hatte in das CellClick-Event von DGV_1 den Tableadapter von DGV_2 in Abhängigkeit der ausgewählten Zeile neu befüllt. Das hat dann jedesmal die neuen Daten im BindingSource überschrieben. Besser ist wohl an dieser Stelle DGV_2 über die Filter-Methode des BindingSource zu filtern.
Danke Euch.

PS: Wie man Daten in ein DataTable schreiben kann, das nicht an ein DataSource gebunden ist (und auch kein TableAdapter hat), würde mich trotzdem interessieren.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Lokales Datatable aus verlinkten Tabelle befüllen 
Autor: Manfred X
Datum: 22.06.15 18:27

Hallo!

Das Refresh eines Controls führt zum neuen Zeichnen der Oberfläche.

Wenn zwischen den Tabellen eine Datarelation (Master/Detail) besteht,
kannst Du das Filtern der untergeordneten Tabelle automatisiert über die
Schlüsselwerte per Bindingsource regeln.

Eine Datatable ist eine Klasse zur Datenaufbewahrung, die auch völlig unabhängig
von Controls, Adaptern oder Datenbindung eingesetzt werden kann.

Direkte Nutzung:
- eine Instanz der Datatable erstellen
- in dieser Instanz per Columns.Add-Methode geeignete Spalten hinzufügen
- durch die Rows.Add-Methode können Datenzeilen (incl. Daten) angefügt werden

Im Forum findest Du dafür zahlreiche Beispiele.
http://www.vbarchiv.net/forum/read.php?f=22&t=94842&i=94845

Beitrag wurde zuletzt am 22.06.15 um 18:35:52 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel