Autor |
Beitrag |
LowSkills
      
Beiträge: 111
Windows XP
Delphi 6 Professional
|
Verfasst: Sa 09.06.07 17:34
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.
_________________ Verstand ist eines der am besten verteilten Güter. Jeder denkt, er hätte genug davon.
Kein Problem widersteht lange dem Angriff beharrlichen Denkens.
|
|
LowSkills 
      
Beiträge: 111
Windows XP
Delphi 6 Professional
|
Verfasst: Mo 11.06.07 09:00
Hallo?
Kann keiner helfen? ich brauch euch doch...
*heul*
_________________ Verstand ist eines der am besten verteilten Güter. Jeder denkt, er hätte genug davon.
Kein Problem widersteht lange dem Angriff beharrlichen Denkens.
|
|
UGrohne
      

Beiträge: 5502
Erhaltene Danke: 220
Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
|
Verfasst: Mo 11.06.07 10:11
Zeig mal ein bisschen mehr Delphi-Code. Wir fragst Du die Daten ab
|
|
LowSkills 
      
Beiträge: 111
Windows XP
Delphi 6 Professional
|
Verfasst: 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...
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.
_________________ Verstand ist eines der am besten verteilten Güter. Jeder denkt, er hätte genug davon.
Kein Problem widersteht lange dem Angriff beharrlichen Denkens.
|
|
Agawain
      
Beiträge: 460
win xp
D5, MySQL, devxpress
|
Verfasst: 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 
      
Beiträge: 111
Windows XP
Delphi 6 Professional
|
Verfasst: 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...

_________________ Verstand ist eines der am besten verteilten Güter. Jeder denkt, er hätte genug davon.
Kein Problem widersteht lange dem Angriff beharrlichen Denkens.
Zuletzt bearbeitet von LowSkills am Di 12.06.07 00:02, insgesamt 1-mal bearbeitet
|
|
Agawain
      
Beiträge: 460
win xp
D5, MySQL, devxpress
|
Verfasst: 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 
      
Beiträge: 111
Windows XP
Delphi 6 Professional
|
Verfasst: 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???
_________________ Verstand ist eines der am besten verteilten Güter. Jeder denkt, er hätte genug davon.
Kein Problem widersteht lange dem Angriff beharrlichen Denkens.
|
|
LowSkills 
      
Beiträge: 111
Windows XP
Delphi 6 Professional
|
Verfasst: 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...
_________________ Verstand ist eines der am besten verteilten Güter. Jeder denkt, er hätte genug davon.
Kein Problem widersteht lange dem Angriff beharrlichen Denkens.
|
|
Agawain
      
Beiträge: 460
win xp
D5, MySQL, devxpress
|
Verfasst: 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 
      
Beiträge: 111
Windows XP
Delphi 6 Professional
|
Verfasst: Di 12.06.07 00:16
*kleinlaut danke sag*
_________________ Verstand ist eines der am besten verteilten Güter. Jeder denkt, er hätte genug davon.
Kein Problem widersteht lange dem Angriff beharrlichen Denkens.
|
|
Agawain
      
Beiträge: 460
win xp
D5, MySQL, devxpress
|
Verfasst: 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 
      
Beiträge: 111
Windows XP
Delphi 6 Professional
|
Verfasst: Di 12.06.07 20:34
Vielen Dank @Agawain!
Das hat geholfen... Seit 6 Wochen habe ich auf diesen grandiosen Moment hingearbeitet!
Danke man! 
_________________ Verstand ist eines der am besten verteilten Güter. Jeder denkt, er hätte genug davon.
Kein Problem widersteht lange dem Angriff beharrlichen Denkens.
|
|
Maikrobi
Hält's aus hier
Beiträge: 1
|
Verfasst: 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
Moderiert von UGrohne: Beitragsformatierung überarbeitet.
|
|