Datenbankpfad bei Datasets automatisch aktualisieren
-
Hi,
die Datasets sind ja über die Eigenschaft Datenquelle mit der Datenbank verbunden.
Ich kann diese Quelle ja jederzeit neu setzten. Gibt es eine Möglichkeit, dass er automatisch die Tabellen der Datenbank mit denen des Datasets abgleicht und aktualisiert? Als Beispiel: Wenn ich die Datenbank an einen anderen Ort kopieren und sie dadurch neu anbinden muss, wäre es toll wenn er die Tabellen auch neu verlinken würde.Pascal
-
Wie kommst Du darauf? Ein DataSet hat nicht sowas wie DataSource. Die einzelnen DataTables können von verschiedenen Konnektoren gefüllt worden sein. Oder meinst Du den Designer?
-
Ich kann im Designer bei der BindingSource die Datenquelle auswählen. Wenn sich diese nun ändert, sei es vom Pfad oder von den tabellen her, so wäre es schön, wenn sich die angebundenen TableAdapters und DataSets auch aktualisieren würden.
Aber meine bisherige Erfahrung zeigt, dass das nicht der Fall ist und ich die DataSets manuell ändern muss.
Sry, wenn ich mich missverständlich ausgedrückt habe:-)Pascal
-
Also das Problem ist folgendes:
Ich habe eine Hauptfenster und mehrere Kindfenster in meiner GUI. Außerdem habe ich mehrere BindingSources und DataSets angelegt. Die funktionieren auch wunderbar und soweit bin ich auch ganz zufrieden. Leider habe ich ein Problem, wenn ich das Prgramm auf einen anderen Rechner spiele und der Datenbankpfad sich ändert. Ich weiß das ich den Connection-String ändern muss, aber wenn ich den in der .h-Datei eines DataSets ändere, bekomme ich eine Fehlermeldung. Dabei ist es egal, ob ich das manuell oder per Variable ändere. Ich habe auch gesehen, dass in der .xsd-Datei des jeweiligen DataSets der Pfad auch angegeben ist. Was ich brauche, ist eine Möglichkeit all diese Angaben zu ändern und per Variable auf den aktuellen Pfad zu setzten. Es wäre ja blöd, wenn ich jedesmal die DataSets neu erstellen müsste, damit des Programm die Verknüpfungen aktualisiert.
Ich brauche dringend Hilfe dabeiPascal
-
Unter C# würde man unter Properties->Settings sich den Verbindungsstring mit Scope 'Application' anlegen. Er erzeugt dann ein Konfigurationsfile, welches man bequem zur Laufzeit auslesen kann. Weiss nicht ob das in C++/CLI geht. Zur Not eine Ini-File/XML-File basteln und deren Inhalt zur Laufzeit auslesen (Also Konnektion String dort reinschreiben, und beim Erzeugen des Konnektors diesen String zuweisen.) Diese File dann mit 'deployen', ins MSI-File mit reinpacken. Dann kann man es individuell am Kundenrechner konfigurieren.
Edit: Du meinst wie kann man in dem DataSet die Verbindung ändern? Würde ich ein DbConnection-Objekt mit dem String aus der Konfig-File erzeugen, dem DataAdapter zuweisen (Setter "Connection") und dann Daten einlesen.
BTW: Unter Add New Item gibts unter C++/CLI den TYp Configuration File. Vllt damit mal rumspielen