Entwickler-Ecke
Datenbanken - Probleme mit AdoQuery und SQL / Abfrage von Access Daten
LowSkills - Sa 09.06.07 17:34
Titel: Probleme mit AdoQuery und SQL / Abfrage von Access Daten
Tach!
Problem:
Will mit Delphi ein Prog schreiben, dass mir irgendwie die Abfrageergebnisse einer SQL Anweisung auswirf. Die Datenbank ist Access 2.0, die SQL-Anweisungen bekomme ich auch relativ (Accessintern) bequem vorgekaut... Sieht so aus:
SQL-Anweisung
1: 2: 3: 4:
| SELECT DISTINCTROW [T10 - Belegungseinheiten].[Code BE], [T10 - Belegungseinheiten].[Titel Ausgabe], [T10 - Belegungseinheiten].[TB/Ko/GA] FROM [T10 - Belegungseinheiten] WHERE (([T10 - Belegungseinheiten].[TB/Ko/GA]="TB")) ORDER BY [T10 - Belegungseinheiten].[Code BE]; |
Die Anweisungen haben wir per Copy&Paste in den SQL-Teil der ADOQuery reingehauen, aber das ausgegebene Ergebnis lautet: 0... :(
Die Connection steht, die SQL-Tags sind (zumindest in Access) richtig. Was läuft da falsch?
Wie komme ich an meine Daten ran und wie kann ich die auch verarbeitbar anzeigen lassen?
Liest der vielleicht gar nicht und sagt einfach nur null???
Hilfe....
Moderiert von
Klabautermann: Delphi- durch SQL-Tags ersetzt.
LowSkills - Mo 11.06.07 09:00
Hallo? :(
Kann keiner helfen? ich brauch euch doch...
*heul*
UGrohne - Mo 11.06.07 10:11
Zeig mal ein bisschen mehr Delphi-Code. Wir fragst Du die Daten ab
LowSkills - Mo 11.06.07 21:08
Hallo Uwe.
Viel mehr quelltext gibts eigentlich noch nicht. ich bring trotzdem mal alles ein, was die aktuelleste testversion so mit sich bringt...
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DB, ADODB, StdCtrls;
type TForm1 = class(TForm) Button1: TButton; Button2: TButton; ADOConnection1: TADOConnection; ADOQuery1: TADOQuery; Button3: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private public end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); var opened: boolean; begin opened:=true; try ADOConnection1.Open; except opened:=true; end;
if opened = true then showmessage('Die Connection zur Datenbank wurde hergestellt') else showmessage('Die Datenbank konnte nicht geöffnet werden'); end;
procedure TForm1.Button2Click(Sender: TObject); var opened: boolean; begin opened:=false; try ADOConnection1.close; except opened:=true; end;
if opened = false then showmessage('Die Connection zur Datenbank wurde geschlossen') else showmessage('Die Datenbank konnte nicht geschlossen werden'); end;
procedure TForm1.Button3Click(Sender: TObject); var aim_reached: boolean; begin aim_reached:=true; try ADOQuery1.ExecSQL; except aim_reached:=false; end;
if aim_reached = true then showmessage('Soweit sogut...') else showmessage('Ne ne...'); end;
end. |
Wie gesagt, nicht viel.
In der SQL Anweisung der ADOQuery1 steht jetzt allerdings folgendes:
SQL-Anweisung
1:
| SELECT * FROM [T10 - Belegungseinheiten] |
Das war auch schon alles.
Bekomme beim ausführen auch die Meldung "soweit so gut", daher gehe ich davon aus, dass er sich die Daten irgendwie angeschaut haben sollte, aber wie schaffe ich es, die auch greifen zu können?
Für's erste würde mir die Anzeige der Daten in einem StringGrid oder vergleichbaren Komponenten reichen, damit ich schonmal sehe, dass der überhaupt was macht.
Hoffe du was damit anfangen.
Vielen Dank schonmal vorab.
Agawain - Mo 11.06.07 23:37
hi
weis das query doch einfach einem datensensitivem Grid zu, solltest Du in D6 professional haben, nehm ich mal an.
und ansonsten, über die Coderweiterungsfunktion mal schauen, was es alles an Eigenschaften gibt und Prozeduren.oder über die Hilfe.
Kenn zwar ADO nicht, aber im Allgemeinen kann man auf einzelne Feldwerte mit FieldbyName oder
QueryName.FieldValues['FeldName'] zugreifen...sowas als showmessage ist schnell getetestet...wobe im Form schnell mal nen DBGrid rein und Datenmenge.active auf true, dann hat man gleich den besseren Überblick.
Gruß
Aga
LowSkills - Mo 11.06.07 23:51
o.0 Was is los?
hab mal aus Spaß so ein dbgrid reingehaun, aber das hilft mir so gar nicht weiter. Was meinst du mit datenmenge.active = true? Das Check ich nicht...
BTW: ich habe mittlerweile rausgefunden, dass er sich auf jeden Fall innerhalb der Tabelle und nur im Rahmen der von mir gewählten Parameter aufhält. Hab das mit dem RecordCount rausgefunden. Wie muss denn jetzt so eine einfache schleife aussehen, die mir zeile für zeile den Kram in ein Grid reinpackt? das kann ja nicht so schwer sein. :(
Ich brech mir da schon seit sechs stunden ein bei ab und habe nichts mehr erreicht als eine message, die mir die Anzahl der Rows ausspuckt...
:motz:
Agawain - Di 12.06.07 00:01
wie gesagt, ich kenn ADO nicht, darum kenn ich die Eigenschaften und Methoden nicht, glaube aber nicht, daß die Eigenschaften und Methoden sich vom äußeren Ansehen fundamental unterscheiden.
D.h. man hat ein Query-Objekt, dessen Eigenschaft active setzt man auf true, dann stehen einem die Daten auch zur Designzeit zur Verfügung.
so, und dann schätz ich mal, daß man einfach wie üblich eine Datasourcekomponente hinzufügt, das query dieser zuweist.
So und die Datasourcekomponente gibt man dann dem Grid mit.
Feddich.
Würd mich wundern, wenns in D6 so anders ist, als in D5
Gruß
Aga
// edit die Codeerweiterungsfunktion kennst Du aber, oder?
LowSkills - Di 12.06.07 00:06
Aloha!
DataSource ist zwar eine Feld im Object Inspector der ADOQuery, aber wenn ich das "aufklappe", bekomme ich die grandiose auswahl von "Nichts" präsentiert. Bei Connection kann ich ja wenigstens aufklappen und die AdoConnection auswählen, aber DataSource bleibt konsequent und beharrlich leer.
Das StringGrid hat die eigenschaft DataSource gar nicht zur Verfügung, oder irre ich mich da???
LowSkills - Di 12.06.07 00:07
LowSkills hat folgendes geschrieben: |
Aloha!
DataSource ist zwar eine Feld im Object Inspector der ADOQuery, aber wenn ich das "aufklappe", bekomme ich die grandiose auswahl von "Nichts" präsentiert. Bei Connection kann ich ja wenigstens aufklappen und die AdoConnection auswählen, aber DataSource bleibt konsequent und beharrlich leer.
Das StringGrid hat die eigenschaft DataSource gar nicht zur Verfügung, oder irre ich mich da??? |
hab nochmal mit dem dbGrid geschaut, das kennt zwar die anweisung datasource, aber auch da habe ich keine Anwahlmöglichkeit zur Query...
Agawain - Di 12.06.07 00:14
*seufz
mal gucken, ob ich auf dem alten pII D3 Enterprise drauf hab, da war glaub ich ADO bei.
Mom
LowSkills - Di 12.06.07 00:16
*kleinlaut danke sag*
Agawain - Di 12.06.07 00:26
aha, hatte sogar auf dem alten Rechner D6, also mit ADO ist das wie ich gesagt habe.
Schau mal unter Datenzugriffskomponenten, dort findest Du Datasource
Diese Kompo dem Formular hinzufügen.
so und dann bei dieser Kompo bei Dataset dein query reinpacken.
und bei dem dbgrid die datasource reinpacken und bei query die Eigenschaft active auf true setzen.
Feddich.
LowSkills - Di 12.06.07 20:34
Vielen Dank @Agawain!
Das hat geholfen... Seit 6 Wochen habe ich auf diesen grandiosen Moment hingearbeitet!
Danke man! ;)
Maikrobi - Fr 15.06.07 14:31
Das Problem ist die SQL-Anweisung, da muss statt [T10 - Belegungseinheiten] der echte Tabellenname rein und bei den Spaltennamen das Gleiche.
Bsp.:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| verz:=ExtractFilePath(ParamStr(0)); with ADOQuery1 do begin try ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + verz + 'buha.mdb' + ';Mode=Read|Write|Share Deny None;Persist Security Info=False'; SQL.Clear; SQL.Add('select * from kassenbuch order by nummer desc'); except Beep; ShowMessage('Datenbankabfrage fehlgeschlagen!') end end; ADOQuery1.Active:=true; |
So nun viel Spass :D
Moderiert von
UGrohne: Beitragsformatierung überarbeitet.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!