Hallo an Alle,
ich habe jetzt mal mit dem nachfolgendem Code gespielt, und dabei sind mir zwei Dinge augefallen.
1.) RecordCount ergibt 1, aber FieldCount nur 0.
2.) In der aktuellen Version komme ich nicht mehr aus dieser Procedure, ich muss das Programm mit kill abschiessen. Ich habe das Gefuehl ich bewege mich in einer Endlosschleife, woher kommt das?
Die SQL-Aweisung auf der MySQL-Console bringt genau das Ergebnis was ich erwarte.
Bei der Anwendung von SQLQuery1.Fields.GetFieldNames(Liste); erhalte ich die Fehlermeldung: Access violation ??????
Code: Alles auswählen
procedure TfrmMain.inDatumExit(Sender: TObject);
var
txtSQL :String;
strdatum :String;
strZw :String;
sumsys :String;
Liste :TStringlist;
begin
// Durchschnittswerte fuer den einegegeben Tag ermitteln und ausgeben
lbDatum.Caption := inDatum.Text;
strZw := copy(inDatum.Text,7,4);
strZw := strZw + copy(inDatum.Text,4,2);
strZw := strZw + copy(inDatum.Text,0,2);
strdatum := quotedstr(strZw);
txtSQL := 'SELECT AVG(g_sys) AS sumsys FROM gesundheit WHERE g_datum='+strdatum+';';
SQLQuery1.SQL.Clear;
SQLQuery1.SQL.Add(txtSql);
SQLQuery1.Prepare;
showmessage(SQLQuery1.SQL.Text);
SQLQuery1.Open;
showmessage('Anzahl Saetze ' + inttostr(SQLQuery1.RecordCount));
showmessage('Anzahl Felder ' + inttostr(SQLQuery1.FieldCount));
//SQLQuery1.Fields.GetFieldNames(Liste);
//Showmessage(Liste.Text);
if SQLQuery1.RecordCount > 0 then
if SQLQuery1.FieldCount > 0 then
lbSYS.Caption := SQLQuery1.fieldbyname('g_sys').asString
else
begin
showmessage('Keine Daten vorhanden');
SQLQuery1.Close;
exit;
end;
end;
Danke fuer Eure Hilfe und Tipps.
Bis dann ...
MfG
Günter