Форум: "Базы";
Текущий архив: 2004.01.23;
Скачать: [xml.tar.bz2];
ВнизBDE+ODBC+MySQL - ошибка при выполнении запроса Найти похожие ветки
← →
Skif (2003-12-25 19:02) [0]Имеется проект, подключены следующие елементы 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 20:31) [1]Немного разобрался. заменил 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)?
← →
Skif (2003-12-25 21:22) [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 21:25) [3]Ах, да, в Query1.DatabaseName - squid - имя моей базы прописаной в настройках драйвера mysql в ODBC.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.01.23;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.006 c