Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

BDE+ODBC+MySQL - ошибка при выполнении запроса [D6, MySQL]


Skif ©   (2003-12-25 19:02:00) 

Имеется проект, подключены следующие елементы TDataSource, TDataBase, TQuery. В Database параметр AliasName:=myodbc3-test тобишь от ODBC драйвер мускула. Конект к базе идет на ура. Тут проблем нет, но вот при выполнении запроса - облом...:



procedure TForm1.Button1Click(Sender: TObject);
begin

Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add("SELECT sum(size) from squid_log_1;");

try {перехватчик ошибок}
Query1.Open; {Выполняем запрос и открываем набор данных}
except {секция обработки ошибок}
On e : EDatabaseError do {e - новый дескриптор ошибки}
messageDlg(e.message,mtError,[mbOK],0); {показываем свойство message объекта e}
end; {окончание обработки ошибки}

end;



после выполнения, точнее в процессе Query1.Openвываливается с ошибкой:

Project Project1.exe reiced exception class EDBEngineError with message Invalid use of keyword. Token size)


Подскажите, где я неправ.
Спасибо.


Skif   (2003-12-25 21:25:00) [1]

Ах, да, в Query1.DatabaseName- squid- имя моей базы прописаной в настройках драйвера mysql в ODBC.


Skif   (2003-12-25 21:22:00) [2]

Все, самостоятельно разобрался, спасибо. Кому интересно, вот решение:

procedure TForm1.Button1Click(Sender: TObject);
var
t,user:string;
begin
t:="size";
user:=#39"skif"#39;

Database1.Connected:=true;
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add("SELECT sum("+ t +") from squid_log_1 where ident="+ user);
ShowMessage("ident");
Query1.Open; {Выполняем запрос и открываем набор данных}

showmessage(Query1.Fields[0].AsString);
Database1.Connected:=false;

end;


Skif   (2003-12-25 20:31:00) [3]

Немного разобрался. заменил sizeна другой столбец ( ident) и все заработало. Неполностью правда. Вопрос, не ужели sizeзарезервирован BDE-шкой?(под MyDac такого нету, но он к сожалению триальный :(((, а потому использовать не могу.)
В общем изменил код до такого вида


Database1.Connected:=true;
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add("SELECT ident from squid_log_1;");
Query1.Open;


Но теперь выдает другую ошибку:

Project Project1.exe reiced exception class EDBEngineError with message: "Table does not exist.Directory or file does not exist:
File: d:\prog_bde\squid_log_1.DB
File: d:\prog_bde\squid_log_1.DBF
File: d:\prog_bde\squid_log_1.txt
File: d:\prog_bde\squid_log_1". Process stoped. Use Step or Run to continue.



Почему он ищет таблицу не на сервере, как прописано в ODBC, и в параметрах DataBase1.Params (указан IP-адресс сервера HOST NAME 192.168.10.244)?


Наверх

Титульная страница Поиск, карта сайта Написать письмо