| |
VB.NET - Ein- und UmsteigerDaten in "externe" Datenbank schreiben | | | Autor: stefanbla80 | Datum: 04.04.18 20:09 |
| Hallo zusammen,
mit Visual Studio habe ich eine Datenbank (Access) mit meinem Tool verknüpft.
Das Anzeigen der Daten erfolgt via DataGridView - funktioniert meiner Meinung nach sehr gut.
Ich füge über ein Form z. B. neue Projekte hinzu usw.
Genau diese neuen bzw. ausgewählte Projekte will ich nun auch in eine "externe" Datenbank speichern - also die Daten sozusagen in meine "lokale", verknüpfte Datenbank schreiben, aber auch in meine "externe".
Meine Frage: Wie geht so etwas?
Grüße
Stefan | |
Re: Daten in "externe" Datenbank schreiben | | | Autor: Franki | Datum: 05.04.18 03:02 |
| Hallo Stefan,
vom Prinzip her genau so wie in deine bisherige Datenbank.
Der Unterschied besteht darin, dass du erstens in deinem Programmcode die andere (externe) Datenbank benennen musst (Stichwort Connection) und zweitens auch die entsprechenden Berechtigungen notwendig sind um Daten schreiben zu dürfen.
Dann ist noch zu berücksichtigen, ob es sich um die gleiche Version handelt, evtl. sind Anpassungen notwendig. Z.B. lokal Access Datei, extern SQL Server, da sind je nach Version einige Datentypen/Feldtypen anders.
Wenn du Daten gleichzeitig in beide Datenbanken schreiben möchtest solltest du eine Schleife bauen, die beide nacheinander behandelt.
Und zusätzlich wirst du auch eine Möglichkeit des Abgleichs bzw. der Synchronisation zwischen den beiden brauchen. Und natürlich eine Fehlerbehandlung falls der Schreibvorgang in die externe aus welchen Gründen auch immer nicht klappen sollte. (Wo liegt die externe denn? Im lokalen Netzwerk, bei einem Webhoster, in der Cloud?)
Du solltest dein Vorhaben etwas genauer beschreiben...
Gruß
Frank | |
Re: Daten in "externe" Datenbank schreiben | | | Autor: stefanbla80 | Datum: 05.04.18 07:43 |
| Hallo Frank,
vielen Dank für Deine Antwort.
Zitat: | | vom Prinzip her genau so wie in deine bisherige Datenbank.
Der Unterschied besteht darin, dass du erstens in deinem
Programmcode die andere (externe) Datenbank benennen musst
(Stichwort Connection) und zweitens auch die entsprechenden
Berechtigungen notwendig sind um Daten schreiben zu dürfen. | |
=> Meine interne Datenbank habe ich mit dem Visual Studio Assistenten verknüpft.
Hier schreibe ich die Daten über die Table in die Datenbank.
Meine "externe" Datenbank ist ja ist keinster Weise "verbunden" - Hast Du mir ein Beispiel wie ich eine neue Zeile in einer "externen" Datenbank anlegen kann.
Grüße
Stefan | |
Re: Daten in "externe" Datenbank schreiben | | | Autor: Manfred X | Datum: 05.04.18 08:45 |
| Hallo!
Ich nehme an, Du meinst mit "Verknüpfung", daß Du im Visual Studio
den Code für die Interaktion mit der Datenbank durch den Assistenten
automatisiert erstellt hast.
Wenn Du den Zugriff auf eine relationale Datenbank selbst gestalten willst,
stehen dafür im Net-Framework die entsprechenden Klassen zur Verfügung
(siehe auch die Beispiele im ADO.Net-Forum) - falls es einen Net-Treiber
für diese Datenbank gibt.
Darüber hinaus brauchst Du einige SQL-Kenntnisse.
Entsprechende Seiten sind leicht zu finden. | |
Re: Daten in "externe" Datenbank schreiben | | | Autor: stefanbla80 | Datum: 05.04.18 22:01 |
| Hallo zusammen,
also ich bekomme das nicht hin ...
Private Sub TestDB()
Dim con As New OleDb.OleDbConnection
Dim da As OleDb.OleDbDataAdapter
Dim dbprovider As String = "Provider=Microsoft.ACE.OLEDB.12.0;" _
'Microsoft Datenbankmodul festlegen
Dim dbsource As String = "U:\12 - ProjectList\ProjectGuideExtern.accdb" _
'Pfad zur Access-Datenbank
con.ConnectionString = dbprovider & dbsource 'Funktion für den
' Verbindungs-String
con.Open() 'Verbindung zur Datenbank öffnen
MsgBox("Verbindung zur Datenbank wurde hergestellt!") 'Bestätigung
End Sub Fehlermeldung "Das Format der Initialisierungszeichenfolge stimmt nicht mit der Spezifikation überein, die bei Index '34' beginnt."
Ich möchte einfach nur eine neue Zeile in der DB anlegen ...
Aber: Wie kann ich die richtige Tabelle hierfür auswählen, die richtigen Spalten usw.
Grüße
Stefan | |
Re: Daten in "externe" Datenbank schreiben | | | Autor: Franki | Datum: 06.04.18 02:05 |
| Hallo Stefan,
fangen wir das mal anders an:
Was steht denn im Code bezüglich der Verbindung zu deiner lokalen Daenbank? Also wie wird die Verbindung hergestellt, wo liegt sie usw.?
Du schreibst in deinem anderen Beitrag, dass du keinerlei Verknüpfung zu der anderen DB hast. Die musst du aber haben.
Und nochmals meine Frage konkretisiert: Was verstehst du unter "extern"? Laufwerk U kann viel bedeuten, Laufwerksbuchstabe auf eigenem Rechner, Laufwerk im lokalen Netzwerk, über Windows verbundenes Verzeichnis irgendwo... Das musst du konkretisieren.
Bevor du daran gehst Daten in die gewünschte DB zu schreiben zu lesen usw. solltest du vorher prüfen, ob die Connection auch steht. Prüfe das nach dem .open einfach per .state, dann sieht du schon, ob es sich lohnt auf die DB zuzugreifen per weiterem Code.
Gruß
Frank | |
Re: Daten in "externe" Datenbank schreiben | | | Autor: stefanbla80 | Datum: 06.04.18 12:46 |
| Hallo nochmals,
Mein Tool hat ein DataGridView als "Anzeige" - dahinter hängt eine Datenbank von Access.
Diese Datenbank habe ich automatisch mit meinem Tool "verknüpft", über den Visual Studio Assistenten.
Bestimmte Einträge sollen nun in eine zweite Datenbank übergeben werden.
Diese liegt auf einem Gruppenlaufwerk, auf das mehrere Nutzer zugreifen können - aus diesem Grund auch die Datenbank.
Lege ich also einen neuen Datensatz in meinem Tool an, will ich bestimmte Daten auch in die "externe" Datenbank schreiben.
Das Laufwerk "U:\" ist nur ein Testbeispiel ...
Alles was ich machen möchte ist "schreiben" einen neuen Eintrag in der "nichtverknüpften" Datenbank zu erstellen. Mein erster Ansatz war, dass ich einfach in eine Exceltabelle geschrieben haben. Aber das ist nicht handhabbar - aus diesem Grund die zweite "externe" Datenbank.
Dim query As String
Dim conStr As String = "Driver={Microsoft Access Driver (*.mdb)};Dbq=" _
& Application.StartupPath & "\datenbank.mdb;"
query = "INSERT INTO def (feld1, feld2, usw) VALUES ('" & erster wert & _
"', '" & zweiter wert & "', '" & usw & "')"
Dim conn As New System.Data.Odbc.OdbcConnection(conStr)
Dim com As New System.Data.Odbc.OdbcCommand(query, conn)
Try
conn.Open()
com.ExecuteNonQuery()
MsgBox("OK")
Catch ex As Exception
MsgBox("Fehler" & vbcrlf & ex.Message)
Finally
conn.Close()
End Try Ich vermute so oder so ähnlich könnte das funktionieren - nur komme ich nicht weiter.
Grüße
Stefan | |
Re: Daten in "externe" Datenbank schreiben | | | Autor: stefanbla80 | Datum: 06.04.18 13:35 |
| Oder was wäre wenn ich wieder den VB-Assistenten verwende, die "externe" Datenbank auch damit mit dem Tool "verknüpfe" und dann in diese schreibe.
Aber: Was passiert wenn sich der Pfad auf dem "Gruppenlaufwerk", in dem die "externe" Datenbank dann liegt, ändert? | |
Re: Daten in "externe" Datenbank schreiben | | | Autor: Franki | Datum: 10.04.18 04:05 |
| Hallo Stefan,
du hast da wahrscheinlich einen grundsätzlichen Gedankenfehler was Datenbanken betrifft.
Excel ist keine Datenbank, das solltest du schnell vergessen...
Wenn du mehrere Access Dateien von deinem Programm aus beschreiben möchtest, dann brauchst du eine fefinitive Unterscheidung zwischen den beiden *.mdb Dateien, Assistenten helfen dir da nicht weiter.
Also konkret: Erste DB Connection herstellen per Command1...
Zweite DB Connection herstellen per Commmand2...
Und je nach Button erst mal versuchen die Verbindung aufzubauen, zu lesen und zu schreiben in die beiden Dateien in einem Testprojekt. Erst wenn das klappt gehst du an die eigentliche Aufgabe.
Nur so kannst du Fehler analysieren, lernst du etwas usw.
Wenn du das in einem Testprojekt mit Testdateien ("Datenbanken") geschafft hast, dann geht dir per Bedingung, Schleife oder sonst was die Programmierung deines eigentlichen Problems auch locker von der Hand. Assistenten helfen dir da rein gar nichts weil sie dafür auch nicht gedacht sind dem Progammierer das Wissen ab zu nehmen. Assistenten können hilfreich fßr Routineaufgaben sein aber mehr auch nicht. Wenn die Aufgabe erweitert oder geändert werden muss, dann sind Kenntnisse gefragt die über den Automtismus der Assistentem hinaus gehen.
Gruß
Frank | |
| 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 |
|
|
Neu! sevEingabe 3.0
Einfach stark!
Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. Weitere InfosTipp des Monats Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|