Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > SQL


Автор: Spawn 19.8.2002, 20:40
Привет всем, кто меня еще помнит)))Сейчас нет возможности часто посещать этот форум,так как внешка((( Но вот у меня возник один вопрос: делаю я для себя программу схожую с ISQ(так как аська внешка) для общения с несколькими челами в Е-бурге. При регистрации нового пользователя хочу сохранять даныые о нем в базе данных(причем решил попробовать с TQuery):

case ConnFlag^ of
0:begin
 ...
 end;
1:begin
  StatusBar1.SimpleText:='Ïîïûòêà ðåãèñòðàöèè êëèåíòà ñ ñîåäèíåíèåì: '+Copy (Recevtext^,2,Length(RecevText^));
  if Query1.Active then
    begin
      Query1.Close;
      Query1.SQL.Clear;
      Query1.SQL.Add('INSERT INTO Messager(Name) Values("lala")');
      Query1.Open;
    end;
 end;
end;
Так пишет, что произошла ошибка создания дескриптора курсора.
Пробовал и так:

Query1.Insert;
Query1.ParamByName('Name').AsString:=UOM_NAME;
Query1.Post;

где UOM_NAME-имя пользователя, пытающегося зарегистрироваться на сервере(Поступает от клиента).
В этом случае пишет, что таблица находится в режиме ReadOnly, хотя у компонента TQuery я не нашел такого параметра(((
Подскажите, пожалуйста, что можно сделать. А то без аськи неудобно как-то.

Автор: Fantasist 20.8.2002, 06:42
Query1.SQL.Text:='INSERT INTO Messager(Name) Values("lala")';
Query1.ExecSQL;

Двойные кавычки, тоже понимаются не всеми субд правильно, поэтому может надо заключить строковое значение в апострофы.

Автор: Vit 20.8.2002, 07:13
А что за база данных?

Автор: adminlion 23.8.2002, 02:30
Когда выполняется запрос DDL (dinamic.....) то нужно писать ExecSQL а не Open. Open пытается вернуть курсор, котрого не может и быть при инсерте

Автор: Spawn 23.8.2002, 14:45
База данных Paradox. А возможно ли как-нибудь связать SQL-запрос c переменной? Насколько я понял, это надо делать через параметрические запросы, на что указывает двоеточие перед параметром(например: WHERE ID=:IDParam), но если я пытаюсь поставить параметр в такой запрос:
INSERT INTO Messager(Name) VALUES(:Name), то выдает ошибку!
--------------------------------------------------------------
И возможно ли присвоить результат запроса переменной??
Например, я хочу найти максимальное значение идентификатора пользователя:
SELECT MAX(ID) FROM Messager
и хочу присвоить результат переменной(например MAXID:integer).

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)