- Код: Выделить всё
select `name`,`count`,`place`,`procearned`,`period_to`,`numbercar`,`vincode`,`numberpasp`,`year_make`,`maker`,`vladeler`,`datedocto`,`datedoctoend` from cars
в консоли показывает все 51 запись. TSQLQuery возвращает только 10! В чем может быть проблема?
Как работает запрос:
- Код: Выделить всё
function TDBConnect.DoAnySQL(SQL: TStringList): integer;
var
i, fi, fc: integer;
ss: string;
begin
if SQL = nil
then begin
Result := -1;
exit;
end;
fSQLQuery.sql.Text := SQL.Text;
fSQLQuery.Open;
Result := fSQLQuery.RecordCount;
if Result > 0
then begin
SQL.Clear;
fc := pred(fSQLQuery.FieldCount);
for i := 1 to Result
do begin
ss := '';
for fi := 0 to fc do ss += fSQLQuery.Fields[fi].AsString + #1;
Delete(ss, Length(ss), 1);
SQL.Append(ss);
fSQLQuery.Next;
end;
end;
fSQLQuery.Close;
end;
Добавлено спустя 43 минуты 53 секунды:
И еще. В этой же таблице пытаюсь обновить запись
- Код: Выделить всё
function TFormDirectorEditCar.DoEdit: boolean;
begin
Result := false;
if ComboBoxPlaces.ItemIndex < 0 then
begin
ShowMessage('Не выбрано место пребывания!');
exit;
end;
ClientConn.Connect.ExecAnySQL('update cars set `count`='+#39+IntToStr(SpinEditKolvo.Value)+#39+
',`place`='+#39+ComboBoxPlaces.Text+#39+
',`procearned`='+#39+IntToStr(SpinEditProcZP.Value)+#39+
',`period_to`='+#39+IntToStr(SpinEditPeriod.Value)+#39+
',`numbercar`='+#39+EditGosN.Text+#39+
',`vincode`='+#39+EditVIN.Text+#39+
',`numberpasp`='+#39+EditPasp.Text+#39+
',`year_make`='+#39+IntToStr(SpinEditYOut.Value)+#39+
',`maker`='+#39+EditMaker.Text+#39+
',`vladeler`='+#39+EditVladelec.Text+#39+
',`datedocto`='+#39+DateTimeToStr(DateEditTalonDate.Date)+#39+
',`datedoctoend`='+#39+DateTimeToStr(DateEditTalonTo.Date)+#39+
' where `name`='+#39+EditCar.Text+#39+
' limit 1');
UpdateGrid;
Result := true;
end;
В таблице обновляется. Т.е.
- Код: Выделить всё
procedure TFormDirectorEditCar.UpdateGrid;
var
cou, i, ci: integer;
sl: TStringList;
nowS: string;
begin
{ Очистили таблицу }
StringGrid1.RowCount:=1;
sl := TStringList.Create;
sl.Text:= 'select `name`,`count`,`place`,`procearned`,`period_to`,`numbercar`,`vincode`,`numberpasp`,`year_make`,`maker`,`vladeler`,`datedocto`,`datedoctoend` from cars';
cou := ClientConn.Connect.DoAnySQL(sl);
if cou > 0 then
begin
StringGrid1.RowCount:= succ(cou);
for i := 1 to cou
do begin
nowS:= sl[pred(i)];
for ci := 0 to 12
do StringGrid1.Cells[ci, i] := LSGet(nowS, succ(ci));
end;
end;
sl.Free;
end;
я вижу, что данные обновились. Но реально, они остаются прежними. TSQLQuery не связан DB-компанентами. Я его использую для простых запросов к MySQL.
Добавлено спустя 25 минут 30 секунд:
С количеством записей разобрался. За это отвечает параметр "PacketRecords". Но возник другой вопрос: как загрузить, скажем, 1000 записей, если "PacketRecords" равен 100?