![]() |
Datenbank: Access • Zugriff über: ADO
Datenbank
Hi,
ne Frage. Wenn ich mein Programm und meine DB(Access) an einen Kumpel schicke dann hat er das Problem mit dem Pfad, wie kann ich das machen, dass z.B. der Pfad immer da ist wo die Anwendung leigt also im selben Ordner. |
Re: Datenbank
Dann setze ihn zu Laufzeit (Pfad der Exe kannst du mit
Delphi-Quellcode:
bzw.
ExtractFilePath( Application.Exename)
Delphi-Quellcode:
ermitteln)
ExtractFilePath( ParamStr(0))
|
Re: Datenbank
Zitat:
Ich mein, ich lade am anfang ja net gleich alles, erst wenn ich auf einen Button klicken werden die Daten aus der Db in das Listview geladen. Wo soll ich denn jetzt den Paf angeben?
Delphi-Quellcode:
var ListItem: TListItem;
begin Listview1.Items.Clear; Query1.SQL.Text := 'Select * from apezdb order by STUID'; Query1.open; while not Query1.Eof do begin ListItem := Listview1.Items.Add; ListItem.Caption:=Query1.FieldByName('id').AsString; ListItem.SubItems.Add(Query1.FieldByName('STUID').AsString); ListItem.SubItems.Add(Query1.FieldByName('Name').AsString); ListItem.SubItems.Add(Query1.FieldByName('Rasse').AsString); ListItem.SubItems.Add(Query1.FieldByName('Planet1').AsString); ListItem.SubItems.Add(Query1.FieldByName('Planet2').AsString); ListItem.SubItems.Add(Query1.FieldByName('Planet3').AsString); ListItem.SubItems.Add(Query1.FieldByName('Mond1').AsString); ListItem.SubItems.Add(Query1.FieldByName('Mond2').AsString); ListItem.SubItems.Add(Query1.FieldByName('Mond3').AsString); Query1.Next; end; end; |
Re: Datenbank
Am Besten im onCreate des Datenmoduls.
|
Re: Datenbank
Datenmodul verwende ich net... meine Anwendung is übersichtlich genug.
Wo soll ich den bei dem COde da oben oder hier noch ma, den Pfad zum laden angeben.
Delphi-Quellcode:
var ListItem: TListItem;
begin Listview1.Items.Clear; Query1.SQL.Text := 'Select * from apezdb order by STUID'; Query1.open; while not Query1.Eof do begin ListItem := Listview1.Items.Add; ListItem.Caption:=Query1.FieldByName('id').AsString; ListItem.SubItems.Add(Query1.FieldByName('STUID').AsString); ListItem.SubItems.Add(Query1.FieldByName('Name').AsString); ListItem.SubItems.Add(Query1.FieldByName('Rasse').AsString); ListItem.SubItems.Add(Query1.FieldByName('Planet1').AsString); ListItem.SubItems.Add(Query1.FieldByName('Planet2').AsString); ListItem.SubItems.Add(Query1.FieldByName('Planet3').AsString); ListItem.SubItems.Add(Query1.FieldByName('Mond1').AsString); ListItem.SubItems.Add(Query1.FieldByName('Mond2').AsString); ListItem.SubItems.Add(Query1.FieldByName('Mond3').AsString); Query1.Next; end; end; |
Re: Datenbank
Delphi-Quellcode:
Und dann die Query vor dem Kompilieren schließen.
Query1.DataBaseName := ExtractFilePath( ParamStr(0));
|
Re: Datenbank
Hallo,
um den Programmpfad immer "in der Hand" zu haben lege ihn mittels
Delphi-Quellcode:
in einen string.
var
programmpfad: String; ... programmpfad:=ExtractFilePath( Application.Exename); ... Wann immer er benötigt wird setzt du ihn einfach davor.
Delphi-Quellcode:
Grüße
zB
SaveToFile(programmpfad+'datei.ext'); |
Re: Datenbank
Zitat:
|
Re: Datenbank
Bei ADO musst du dann die DSN anpassen
|
Re: Datenbank
Zitat:
edit: Kannste mir einfach sagen, wo ich bei meinem COde den Pfad eingeben soll^^ Hab ja den Quellcode mehrmals gepostet. |
Re: Datenbank
|
Re: Datenbank
Zitat:
|
Re: Datenbank
Lass dir mal den Connections-String anzeigen und erzeuge ihn so zur Laufzeit mit dem richtigen Pfad
|
Re: Datenbank
Zitat:
Code:
Und jetzt soll ich an stelle vonC:\Dokumente und Einstellungen\Sebastian\Desktop\Apezdb\neu\db1.mdb ja irgendwie was rein machen, wie soll ich das jetzt machen??
Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=C:\Dokumente und Einstellungen\Sebastian\Desktop\Apezdb\neu\db1.mdb;Mode=Share Deny None;Extended Properties="";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False
|
Re: Datenbank
Ja den mit
Delphi-Quellcode:
ermittelten Pfad
ExtractFilePath( ParamStr(0))
|
Re: Datenbank
Zitat:
|
Re: Datenbank
Ja, das sollte so funktionieren.
|
Re: Datenbank
Zitat:
|
Re: Datenbank
Es funzt aber net, da kommt dann so ein Fehler.
Ich post den morgen ma muss jetzt noch wohin, aber der String ist auch einfach zu lang, das macht das PRog richtig lahm. |
Re: Datenbank
Hast du den namen der DB dem Pfad zugefügt?
|
Re: Datenbank
Zitat:
Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=C:\Dokumente und Einstellungen\Sebastian\Desktop\Apezdb\neu\db1.mdb ;Mode=Share Deny None;Extended Properties="";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False Ich muss ja dann ein '' machen und dann + Exe...+ '' was meisnte jetzt soll ich dann noch bei dem Ex... db1.mdb hinschreiben? in dioe Klammern? Also so siehts mom aus:
Delphi-Quellcode:
Es kommt jetzt ein fehler, und zwar Installierbares ISAM nicht gefunden.
Adoconnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source='+ExtractFilePath( ParamStr(0))+';Mode=Share Deny None;Extended Properties="";Jet OLEDB:System database="";'+'Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";'+'Jet OLEDB:Engine Type=5;'+'Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;'+'Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";'+'Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Dont Copy Locale on Compact=False;'+'Jet OLEDB:Compact Without Replica Repair=False;'+'Jet OLEDB:SFP=False';
Adoconnection1.Connected := true; |
Re: Datenbank
Delphi-Quellcode:
...Data Source='+ExtractFilePath( ParamStr(0))+'db1.mdb+';...
|
Re: Datenbank
Zitat:
Das muss ich ja auch machen, da ja alles deaktiviert ist oder?
Delphi-Quellcode:
Adoconnection1.Connected := true;
Query1.Active := true; |
Re: Datenbank
Zur Designzeit alle Verbindungen kappen, zur Laufzeit Connectionstring zusammensetzen und verbinden.
|
Re: Datenbank
Zitat:
Delphi-Quellcode:
edit: Ich denke auch es funktioniert nur es sagt immer ISAM nicht gefunden, was auch immer das ist!
Query1.Close;
Adoconnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source='+ExtractFilePath( ParamStr(0))+'db1.mdb'+';Mode=Share Deny None;Extended Properties="";Jet OLEDB:System database="";'+'Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";'+'Jet OLEDB:Engine Type=5;'+'Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;'+'Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";'+'Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Dont Copy Locale on Compact=False;'+'Jet OLEDB:Compact Without Replica Repair=False;'+'Jet OLEDB:SFP=False'; Adoconnection1.Connected := true; Query1.Active := true; |
Re: Datenbank
Versuch es mal mit Format.
|
Re: Datenbank
Zitat:
Meinste ich soll alles in Format = Reinschreiben und dann Format nur bie Adoconnection.string angeben?? |
Re: Datenbank
Ich habe das hier gerade mal unter Linux mit Lazarus ausprobiert. Sieht eigentlich ganz gut aus (testen kann ich es natürlich nicht):
Delphi-Quellcode:
const sConn = 'Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=%sdb1.mdb;'+
'Mode=Share Deny None;Extended Properties="";Jet OLEDB:System database="";'+ 'Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";'+ 'Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;'+ 'Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;'+ 'Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;'+ 'Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don''t Copy Locale on Compact=False;'+ 'Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False'; var Pfad: string; begin Pfad := IncludeTrailingPathDelimiter(ExtractFilePath(ParamStr(0))); ShowMessage(Format(sConn,[Pfad])); end; |
Re: Datenbank
Zitat:
Danke. Also, du hast folgendes gemacht oben hast du ne constante definiert und mkit dem %s hast du dann später fürs Format gemacht, damit du dann den Pfad reinschreiben kannst, wo es gerade liegt. |
Re: Datenbank
Genau so ;). Wenn sich der Pfad ändert, macht das somit nichts.
|
Re: Datenbank
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz