| |
VB.NET - Ein- und UmsteigerLokales 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. | |
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 | |
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. | |
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. | |
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. | |
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.
| |
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.
| |
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. | |
| 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 |
|
|
sevISDN 1.0
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats Neu! sevPopUp 2.0
Dynamische Kontextmenüs!
Erstellen Sie mit nur wenigen Zeilen Code Kontextmenüs dynamisch zur Laufzeit. Vordefinierte Styles (XP, Office, OfficeXP, Vista oder Windows 8) erleichtern die Anpassung an die eigenen Anwendung... Weitere Infos
|
|
|
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
|
|