количество строк в таблице mysql

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Владимир
постоялец
Сообщения: 355
Зарегистрирован: 23.08.2007 19:48:39
Откуда: Москва

Сообщение Владимир »

Сделай две функции с параметром- строкой запроса, одну на чтение, вторую - на запись

Код: Выделить всё

function TMainFrm.SQLList(ss:AnsiString):Byte;
begin
QueryL.Active:=False;
QueryL.SQL.Clear;
QueryL.SQL.Add(ss);
SQLList:=0;
 try
QueryL.Open;
 except
 QueryL.Active:=False;
ConnectList.Connected:=False;
 MessageDlg(SysToUtf8('Ошибка чтения '+ss),mtError,[mbOk],0);
 SQLList:=1;
 end;//try
end;   

Запись:

Код: Выделить всё

function TMainFrm.SQLWork(ss:AnsiString):Byte;
begin
QueryL.Active:=False;
QueryL.SQL.Clear;
QueryL.SQL.Add(ss);
SQLWork:=0;
 try
QueryL.ExecSQL;
 except
 QueryL.Active:=False;
ConnectList.Connected:=False;
 MessageDlg(SysToUtf8('Ошибка записи в БД '+ss),mtError,[mbOk],0);
 SQLWork:=1;
 end;//try
end;

Используем:

Код: Выделить всё

//читаем
if SQLList('select * from tbl_name where ...')=0 then .....
//редактируем
if SQLWork('update tbl_name set oborud='''+string.Cells[]+'''' where ....')=0 then...
//новая запись
if SQLWork('insert into tbl_name set oborud='''+string.Cells[]+'''',field1=1,field2=2,.... ')=0 then...
Последний раз редактировалось Владимир 07.12.2012 13:40:38, всего редактировалось 2 раза.
Аватара пользователя
amateur
энтузиаст
Сообщения: 552
Зарегистрирован: 03.08.2007 10:15:32

Сообщение amateur »

Код: Выделить всё

dbform.SQLQuery1.Edit;
dbform.SQLQuery1.FieldByName('oborud').AsString:= oborudform.stringgrid1.Cells[1,oborudform.stringgrid1.Row];
dbform.SQLQuery1.Post;
dbform.SQLQuery1.ApplyU
а что это ? У Вас в SQLQuery1 Update-Insert SQL заполнены ? SQLQuery1 - это не TTable, ну почти :)
Хотя, при беглом просмотре оно и не должно сохранять, токо выбирать записи. Может я чет и не знаю, но Вам надо познакомиться с SQL поближе...
Последний раз редактировалось amateur 07.12.2012 11:22:34, всего редактировалось 1 раз.
Владимир
постоялец
Сообщения: 355
Зарегистрирован: 23.08.2007 19:48:39
Откуда: Москва

Сообщение Владимир »

amateur писал(а):SQLQuery1 - это не TTable, ну почти

Поддерживаю!
Вам надо познакомиться с SQL поближе...

2 раза поддерживаю!
Frolik
постоялец
Сообщения: 275
Зарегистрирован: 18.08.2011 11:52:32

Сообщение Frolik »

Для начала рекомендую прочитать "Понимание SQL".
Потом избавиться от вредной привычки редактировать записи прямым доступом. Только запросы.
VladMgn
незнакомец
Сообщения: 8
Зарегистрирован: 02.12.2012 03:25:10

Сообщение VladMgn »

Спасибо всем ответившим, буду ближе знакомится, хотел попроще - поменял - записалось, чтоб не терять и не держать в памяти текстовые таблицы...

Frolik писал(а):Понимание SQL

спасибо за наводку, другие как то не ясно начинаются )
Аватара пользователя
amateur
энтузиаст
Сообщения: 552
Зарегистрирован: 03.08.2007 10:15:32

Сообщение amateur »

В SQLQuery1 есть свойства: Update или InsertSQL. Если они заполнены то, Ваш вариант сработает:)
Вот и будет Query = Table (почти).

Но "Понимание SQL" будет надежней (хотя, я с данной книгой не встречался).
Владимир
постоялец
Сообщения: 355
Зарегистрирован: 23.08.2007 19:48:39
Откуда: Москва

Сообщение Владимир »

Frolik писал(а):Для начала рекомендую прочитать "Понимание SQL".

Ссылка на книгу:
http://www.sql.ru/docs/sql/u_sql/index.shtml#ch8
Пробежал книгу по диагонали. Перевод безобразный, изложение текста излишне академично - явно не для новичка!
На мой взгляд, куда полезнее П.Дюбуа MySQL. Сборник рецептов - масса примеров решений практических задач.
http://webcorp.ru/page/b_sql_mysqlsr.html
Frolik
постоялец
Сообщения: 275
Зарегистрирован: 18.08.2011 11:52:32

Сообщение Frolik »

http://www.sql.ru/docs/sql/u_sql/index.shtml#ch8
Пробежал книгу по диагонали. Перевод безобразный, изложение текста излишне академично - явно не для новичка!
На мой взгляд, куда полезнее П.Дюбуа MySQL. Сборник рецептов - масса примеров решений практических задач.
http://webcorp.ru/page/b_sql_mysqlsr.html


Говоря по старобиблейски: вторая книга даст вам рыбу, а первая научит ее ловить. Выбирайте сами, что нужнее.
Ответить