vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Top-Preis! AP-Access-Tools-CD Volume 1  
 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
Daten 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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
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