![]() |
Access & EDB Kombos - Probleme
Hallo,
folgendes Problem: Zugriff auf Access über EDB Kombos funktioniert einwandfrei - auch löschen, anlegen und updaten. Nur habe ich das Problem, das ich die Datenbank in eine Textdatei umwandeln muss (natürlich erst wenn mann seine Daten eingetragen hat). Die Daten stehen wie gesagt in der DB - und ich will die Daten in eine Txt-Datei ausgeben, aber wie weiß ich nicht. Ich kann irgendwie auch die Daten nicht in ein Memo oder Richedit schicken. Ich will aber auch nicht jede einzelne Zeile getrennt über Edits in ein Memo parsen. Hat irgendwer vielleicht einen Gedanken wie das am besten zu machen geht? mfg delphipitti |
Re: Access & EDB Kombos - Probleme
Zitat:
Du kann lediglich eine Tabelle (oder View) aus einer Datenbank in eine Textdatei im fixed ASCII oder CSV Format ![]() |
Re: Access & EDB Kombos - Probleme
Danke für die schnelle Antwort,
ich weiß dass ich keine Tabelle direkt umwandeln kann. Mein Problem liegt aber darin, die Daten in ASCII zu exportieren, da ich ja das EDB eigene Listview nutze. Und da bin ich noch nicht dahinter gestiegen wie ich das anspreche!? :oops: delphipitti |
Re: Access & EDB Kombos - Probleme
Hallo.
Es freut mich das einer meine Kompos benutzt :D. So nun zum Thema, direct in eine Textdatei umwandeln geht das nicht, wie Shmia schon schrieb. Wenn du die EDBListview nutzt, kannst du entweder direkt aus der Listview lesen. Wie im Normalen Listview:
Delphi-Quellcode:
Es gibt aber bessere Möglichkeiten, wie das direkte auslesen von Recordsets.
for i := 0 to EDBListview.Items.Count-1 do begin
EDBListView.Items.Item[i].Caption; // Erste Spalte EDBListView.Items.Item[i].SubItems.Strings[0]; // 2. Spalte EDBListView.Items.Item[i].SubItems.Strings[1]; // 3. Spalte EDBListView.Items.Item[i].SubItems.Strings[2]; // 4. Spalte EDBListView.Items.Item[i].SubItems.Strings[3]; // 5. Spalte und so Weiter. end; Wenn du den Befehl LoadSQLEx von der EDBSQLStrings ausführst, dann bekommst du ein Recordset zurück, das du auswerten kannst. Dafür gibt es ja schon ein paar kleine Beispiele in der Referenz. Diese musst du dann halt in dein Memo oder so schreiben. Des weiteren hast du noch die Möglichkeit, den letzten SQL Result als XML zu speichern, um eventuell einige andere Programm zu füttern. Ich hoffe, ich konnte dir dabei ein bissel helfen. |
Re: Access & EDB Kombos - Probleme
Ersteinmal Danke für die Antworten.
Ich bin jedenfalls sehr zufrieden mit der Kombo. :lol: Ich werde es mal mit dem Tip des direkten Auslesens der Recordset probieren. Denn Schleifen wollte ich eigentlich vermeiden, denn wenn die Datensätze zu viel sind, dann dauerts ein wenig zu lang. Sollte ich keinen Erfolg haben, dann meld ich mich morgen nochmal zurück. Natürlich auch wenn ich welchen habe. Jedenfalls nochmals Danke... |
Re: Access & EDB Kombos - Probleme
Ok, wenn du irgend etwas geschrieben hast, das in Verbindung mit den EDB Komponenten arbeitet, dann kannst du die mir gerne zusenden und ich baue es ein. Ich bin gerade beim Schreiben einer Verwaltungskomponente. Ich hab nur sehr wenig zeit um das zu bauen, darum verzögert sich das etwas.
|
Re: Access & EDB Kombos - Probleme
Hallo,
ich nochmal. Habe jetzt verschiedene Wege probiert. Weg 1 - Recordset:
Delphi-Quellcode:
Beim ausführen kommt eine Fehlermeldung:
memosql.LoadSQLEx(['artikelnummer'], rs);
Code:
mit einem Verweis auf die edb.pas
Zugrifssverletzung bei Adresse 0048E6DA ... Schreiben von Adresse 00492F10
Delphi-Quellcode:
Self.Columns := DBRec.Columns;
Weg 2 - Direkt:
Delphi-Quellcode:
Funtioniert einwandfrei, doch damit ist mein Problem nicht gelöst.
memosql.LoadSQL(['artikel'], 'artikelname', listbox1.Items) ;
Ich brauch eine Ausgabe die ungefähr so aussieht:
Code:
Ich will also Datensatz für Datensatz auslesen. Aber alles was in einem Datensatz drinne steht, soll dann auch in einen Zeile b.w. hintereinander weg stehen. Ich habe schon probiert eine Schleife zu nehmen, doch wie komme ich ohne Umwege an jeweils den gesamten Datensatz ran? Also ohne Select ID und ähnlichen?? :?:
artikel,artikelnummer,artikelname,beschreibung,...
mfg delphipitti |
Re: Access & EDB Kombos - Probleme
Ich glaube das sollte die als Beispiel dazu helfen:
Delphi-Quellcode:
Die Fehlermeldung kommt, wenn das Recordset noch nicht erstellt wurde. Da du über die Funktion eine Kopie des Recordsets bekommst ist es notwendig ein neues Object zu erstellen.
var rs: TDBRecordsets;
S: string; i: integer; begin rs := TDBRecordsets.Create; // Das ist wichtig, da TDBRecordsets ein Object ist, deswegen Erstellen EDBSQLStrings1.LoadSQLEx(['artikel','artikelnummer','artikelname','beschreibung',....], rs); for i := 0 to rs.Rows-1 do begin S := rs.GetValue(i, 'artikel'); // Artikel Infos S := S + ',' + rs.GetValue(i, 'artikelnummer'); // Artikelnummer S := S + ',' + rs.GetValue(i, 'artikelname'); S := S + ',' + rs.GetValue(i, 'beschreibung'); .... Memo1.Items.Add(S); // artikel,artikelnummer,artikelname,beschreibung,... end; rs.ClearRecordset; rs.Free; |
Re: Access & EDB Kombos - Probleme
Hallo mal wieder!
Erstmal Vielen, vielen Dank - der Tip mit dem Recordset funzt. Ich hatte es vorher per Schleife probiert. Es ging solange gut wie keine ID fehlte, da ich zum Zählen die Id nutzte! Kaum wurde aber ein Artikel gelöscht, gings nicht mehr. Aber aufgrund der Recordset gehts jetzt. Habe aber trotzdem noch zwei Fragen: Frage zur Combo - wie krieg ichs hin, das er mir wie in deinem Beispiel zwei Werte in die Combo schreibt? Ich nutze zur Zeit diesen Code
Delphi-Quellcode:
Also ID in den ID-Bereich und die Suche als Anzeige. Wenn ich aber jetzt folgendes mache:
EDBComboBox1.LoadSQL('SELECT id , artikelname as suche FROM artikel','suche', 'id');
Delphi-Quellcode:
zeigt mir die Combo nur leere Felder!? :gruebel:
EDBComboBox1.LoadSQL('SELECT id ,(artnr + ':' + artikelname) as [suche] FROM artikel','suche', 'id');
Frage zur Access-Db: Ich würde gern die DB passwort schützen. Wenn ich einen Abfrage mit den Parametern:
Delphi-Quellcode:
mache kommt er immer mit irgendwelchen Benutzergruppen und Rechten?
EDB1.CreateDBConnection(db_MSAccess, extractfiledir(application.ExeName) + '\data/artikel.mdb', 'user', 'pw', '',false,true);
Wie wäre die beste Möglichkeit meine DB zu schützen aber dennoch zu öffnen? Vielen Dank erstmal, und falls du irgendwelche Teile der Unit brauchts, musste mal Bescheid geben! mfg delphipitti |
Re: Access & EDB Kombos - Probleme
Zur 2. Frage.
Zum öffnen der DB:
Delphi-Quellcode:
Zum Setzten der DB:
EDB.CreateDBConnection(db_MSAccess, 'Datei', '', '' { leer lassen }, '' { leer lassen}, false, false { wenn hier true, dann wird automatisch beim erstellen der DB eine DBPasswort gesetzt}, 'dein PW' {Dies wird damm zum öffnen verwendet }, false);
Delphi-Quellcode:
!!! Diese zeile Funktioniert nur, wenn die Datei nicht offen ist. Da diese Datei im Exklusiv Modus gestartet werden muss. Also, die DB muss geschlossen sein. !!!
EDB.DropDBConnection; // Schließt die Datei vorher, damit das klappt.
EDB.SetAccessDB_Password('Datei', 'Neues Passwort'; 'Altes Passwort' {Falls nicht vorhanden ''}); Danach kannst du die Verbindung ja wieder herstellen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:19 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