Autor Beitrag
johakbb
Hält's aus hier
Beiträge: 15

Win 7
Delphi 2010, C#, ASP.NET, VS2010
BeitragVerfasst: Di 30.06.09 10:05 
Hallo,
in einer Auslegungssoftware muss ich viele externe Daten verarbeiten. Im ersten Schritt habe ich die über CSV-Dateien eingelesen, aber jetzt möchte ich das eleganter über eine DB machen. Zwar kenne ich mich im Webbereich mit SQL-Datenbanken aus, aber noch nicht in Delphi 7. Forderung des Auftraggebers war, dass die Software weiterhin schlank bleibt und der Endanwender auf seinem Rechner nicht noch irgendwelche Treiber oder Datenbank-Server installieren muss. Habe mich jetzt mal etwas mit Access beschäftigt und erste Testanwendungen gemacht. Dazu folgende Fragen:

1) kann man davon ausgehen, dass der ausgewählte Treiber "Microsoft.Jet.OLEDB.4.0" auf jedem Windows-Rechner automatisch vorhanden ist und funktioniert oder kann/muss man das irgendwie abprüfen?

2) über ADOQuery - DataSource - DBGrid bekomme ich eine Verbindung und das DBGrid füllt sich auch schön mit Daten. Jetzt brauche ich die aber nicht sichtbar, sondern nur im Hintergrund zur Weiterverarbeitung. Laut Tutorial scheint dafür TTable zuständig zu sein, was in Delphi7 wohl DBTable heißt (nur das hab ich gefunden). Wenn ich bei Table1.MasterSource die gleiche DataSource wie beim DBGrid auswähle und dann einfach z. B.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from docu');
ADOQuery1.Active := TRUE;
Label1.Caption := Table1.FieldByName('dcode').AsString;

angebe, kommt der Fehler "Operation bei geschlossener Datenmenge nicht ausführbar". Wenn ich ein Table1.Open einfüge, will er einen Table1.TableName, wenn ich den angeben, sucht er nach einer Datei docu.db usw. Wie verknüpft man den ADOQuery und DBTable korrekt?

3) eine der Tabellen enthält auch russische Texte, die aber im DBGrid nur als ??? rüberkommen. Gibt es da eine Lösung?

Würde mich sehr über Hilfe freuen...
Critter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 328
Erhaltene Danke: 3

Windows 7
Delphi 7 Pro.
BeitragVerfasst: Fr 03.07.09 17:01 
Hallo,

user profile iconjohakbb hat folgendes geschrieben Zum zitierten Posting springen:
1) kann man davon ausgehen, dass der ausgewählte Treiber "Microsoft.Jet.OLEDB.4.0" auf jedem Windows-Rechner automatisch vorhanden ist und funktioniert oder kann/muss man das irgendwie abprüfen?


wenn ich mich recht erinnere waren die ab Windows XP dabei. Völlig sicher bin ich mir aber nicht. Keine Ahnung wie man das Überprüft, aber Falls es nicht vorhanden ist kannst du deine User auffordern, sich den MDAC Treiber kostenlos herunter zu laden.

user profile iconjohakbb hat folgendes geschrieben Zum zitierten Posting springen:
2) über ADOQuery - DataSource - DBGrid bekomme ich eine Verbindung und das DBGrid füllt sich auch schön mit Daten. Jetzt brauche ich die aber nicht sichtbar, sondern nur im Hintergrund zur Weiterverarbeitung. Laut Tutorial scheint dafür TTable zuständig zu sein, was in Delphi7 wohl DBTable heißt (nur das hab ich gefunden).


Nein, tTable ist nur das bekannteste aller Tabellenobjekte, aber auch dieses ist nur eine Implementierung des tDataSet. Das gild auch für dein ADOQuery, sommit müsstest du (fast) alles was du mit tTable machen kannst auch direckt mit diesem tun können. Die absoluten Basics zum "Unsichtbaren" Arbeiten mit Datasets findest du auch hier in der Library.


user profile iconjohakbb hat folgendes geschrieben Zum zitierten Posting springen:
Wenn ich bei Table1.MasterSource die gleiche DataSource wie beim DBGrid auswähle und dann einfach z. B.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from docu');
ADOQuery1.Active := TRUE;
Label1.Caption := Table1.FieldByName('dcode').AsString;

angebe, kommt der Fehler "Operation bei geschlossener Datenmenge nicht ausführbar".


Mache ein "Label1.Caption := ADOQuery1.FieldByName('dcode').AsString;" daraus und es sollte klappen.

_________________
Diejenigen, die grundlegende Freiheiten aufgeben, um ein wenig mehr vorrübergehende Sicherheit zu erkaufen, verdienen weder Freiheit noch Sicherheit.
(Benjamin Franklin;"The Papers of Benjamin Franklin", Vol. 6, Apr. 1, 1755, through Sep. 30, 1756)
johakbb Threadstarter
Hält's aus hier
Beiträge: 15

Win 7
Delphi 2010, C#, ASP.NET, VS2010
BeitragVerfasst: Fr 03.07.09 20:49 
Hallo Critter,
vielen Dank für deine Antwort! Ich werde damit erstmal etwas experimentieren, aber das hilft mir sicher weiter (ggf. schließe ich dann den Thread oder melde mich nochmal).
Gruß