Autor Beitrag
LowSkills
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 111

Windows XP
Delphi 6 Professional
BeitragVerfasst: 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:

ausblenden 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 user profile iconKlabautermann: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 111

Windows XP
Delphi 6 Professional
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Mo 11.06.07 10:11 
Zeig mal ein bisschen mehr Delphi-Code. Wir fragst Du die Daten ab
LowSkills Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 111

Windows XP
Delphi 6 Professional
BeitragVerfasst: 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...

ausblenden volle Höhe 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
    { Private declarations }
  public
    { Public declarations }
  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:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 460

win xp
D5, MySQL, devxpress
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 111

Windows XP
Delphi 6 Professional
BeitragVerfasst: 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:

_________________
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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 460

win xp
D5, MySQL, devxpress
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 111

Windows XP
Delphi 6 Professional
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 111

Windows XP
Delphi 6 Professional
BeitragVerfasst: Di 12.06.07 00:07 
user profile iconLowSkills 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 460

win xp
D5, MySQL, devxpress
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 111

Windows XP
Delphi 6 Professional
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 460

win xp
D5, MySQL, devxpress
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 111

Windows XP
Delphi 6 Professional
BeitragVerfasst: 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



BeitragVerfasst: 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.:

ausblenden 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 user profile iconUGrohne: Beitragsformatierung überarbeitet.