Napisałem łączenie z baza danych MySQL za pomoca dbExpress tak jak to omawia ten artykuł http://4programmers.net/Delphi/Artykuły/MySQL_w_Delphi .
Pytanie mam następujące: jak obliczyć ilość wierszy zwróconych przez zapytanie?
Próbowałem to zrobić i napisałem nastepujacy kod:
DM.Statystyki.CommandText := 'SELECT prdc.materialcode, prdc.description, SUM(dats.qty) AS ilosc, SUM(dats.cost) AS cost, SUM(dats.invalue) AS invalue';
DM.Statystyki.CommandText := DM.Statystyki.CommandText + ' FROM reportsproducts AS prdc';
DM.Statystyki.CommandText := DM.Statystyki.CommandText + ' LEFT JOIN reportsdata AS dats';
DM.Statystyki.CommandText := DM.Statystyki.CommandText + ' ON prdc.materialcode=dats.materialcode';
DM.Statystyki.CommandText := DM.Statystyki.CommandText + ' JOIN handlowiecvat';
DM.Statystyki.CommandText := DM.Statystyki.CommandText + ' ON handlowiecvat.vat=dats.vat';
DM.Statystyki.CommandText := DM.Statystyki.CommandText + ' WHERE handlowiecvat.id=''' + inttostr(HandlowcyArray[ComboBox1.ItemIndex]);
DM.Statystyki.CommandText := DM.Statystyki.CommandText + ''' GROUP BY dats.materialcode;';
end;
DM.Statystyki.Open;
Showmessage('znaleziono ' + InttoStr(DM.Statystyki.RecordCount));
Po wykonaniu kody pojawiają się dwa błędy:
- Database Server Error: Unkown table 'handlowiecvat' in where clause
- [0x0005]: Operation Not Supported
Zapytanie jest na pewno dobrze skonstruowane, poniewaz sprawdzam je w MySQLFront i jest wykonywane poprawnie.
Dziwna że kiedy usunę ostatnia linijke Showmessage('znaleziono ' + InttoStr(DM.Statystyki.RecordCount));
to bład się nie pojawia i wszystko wykonuje się poprawnie. Dlaczego tak się dzieje?