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

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

Почему команда Insert не работает в DELPHI (ADOQuery) [D6, MSSQL]


Arazel ©   (2006-01-30 19:23:00) 

Хотя работает в Query Analyzer

Вот так  я делаю но  не чего не получается... :(
 ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('INSERT INTO Warhouses (C_Name,C_Address,C_Phone,C_Manager)');
  ADOQuery1.SQL.Add('VALUES("Sclad¹3","33453","24345","5656561")');
  ADOQuery1.Open;


Shirson   (2006-02-03 15:40:00) [1]

>msguns ©
>И напрасно

(Ответ в том же стиле)
Нет, не непрасно.


msguns   (2006-02-03 14:36:00) [2]

>Shirson ©   (03.02.06 13:21) [12]
>Я никогда не пользуюсь ничем кроме TADOQuery

И напрасно


kot137   (2006-02-03 14:26:00) [3]


> Johnmen ©   (03.02.06 14:21) [16]

Спасибо. Получилось.


> А вообще, это бардак....

Подругому можно как-то это сделать? Меня такой код тоже не радует.


Johnmen   (2006-02-03 14:21:00) [4]

CommandText:= 'INSERT INTO all (f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f12,f13,f14,f15,f16,f17,f18,f19,f20,f21,f22,f23,f24,f25,f26,f27,f28,f29,f30,f31,f32  ,f33,f34,f35,f36,f37,f38,f39,f40,f41,f42,a1,a2) '+'
VALUES(:qf2,:qf3,:qf4,:qf5,:qf6,:qf7,:qf8,:qf9,:qf10,:qf11,:qf12,:qf12,:qf13,:qf14,:qf15,:qf16,:qf17,:qf18,:qf19,:qf20,:  '+
'qf21,:qf22,:qf23,:qf24,:qf25,:qf26,:qf27,:qf28,:qf29,:qf30,qf31,qf32,:qf33,:qf34,:qf35,:qf36,:qf37,:qf38,:qf39,:qf40,:q f 41,:qf42,:qa1,:qa2)';


А вообще, это бардак....


kot137   (2006-02-03 14:18:00) [5]


> У меня есть такое наивное желание увисеть код, на который
> ругается.

           CommandText:= 'INSERT INTO all (f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f12,f13,f14,f15,f16,f17,f18,f19,f20,f21,f22,f23,f24,f25,f26,f27,f28,f29,f30,f31,f32 ,f33,f34,f35,f36,f37,f38,f39,f40,f41,f42,a1,a2) VALUES(:qf2,:qf3,:qf4,:qf5,:qf6,:qf7,:qf8,:qf9,:qf10,:qf11,:qf12,:qf12,:qf13,:qf14,:qf15,:qf16,:qf17,:qf18,:qf19,:qf20,: qf21,:qf22,:qf23,:qf24,:qf25,:qf26,:qf27,:qf28,:qf29,:qf30,qf31,qf32,:qf33,:qf34,:qf35,:qf36,:qf37,:qf38,:qf39,:qf40,:qf 41,:qf42,:qa1,:qa2)';


Плохиш   (2006-02-03 14:15:00) [6]


> kot137 ©   (03.02.06 14:11) [13]

У меня есть такое наивное желание увисеть код, на который ругается.


kot137   (2006-02-03 14:11:00) [7]


> Какой именно ошибкой она ругается?

Ругается так: String literals may have at most 255 elements


Shirson   (2006-02-03 13:21:00) [8]

Какой именно ошибкой она ругается?
CommandText имеет тип WideString ~2^30 символов.

Я никогда не пользуюсь ничем кроме TADOQuery, и выполняючерез него килобайтный скрипты. Об ограничении в 255 символов слышу впервый раз.


msguns   (2006-02-03 13:20:00) [9]

property CommandText: WideString;


kot137   (2006-02-03 13:05:00) [10]


> msguns ©   (31.01.06 13:20) [7]
> Как надо делать (рыба):
>
> with TADOCommand.Create(nil) do
>  try
>   Connection := ADOTable1(или чего там законнекчено уже).
> Connection;
>   CommandText := 'INSERT INTO Warhouses      
>        (C_Name,C_Address,C_Phone,C_Manager) VALUES(:n,:a,
> :p,:m)';
>   Parameters.ParamByName('n').Value := 'Sclad¹3';
>   Parameters.ParamByName('a').Value := '33453';
>   Parameters.ParamByName('p').Value := '24345';
>   Parameters.ParamByName('m').Value := '5656561';
>   try
>     Execute;
>   except
>     ShowMessage('Ошибка !');
>   end;
>  finally  
>   Free;
>  end;

Подскажите пожалуйста, что делать. У меня в таблице 45 столбцов. И дельфи по такой схеме ругается: CommandText - должна быть переменная до 255 символов. У меня больше. Как это можно обойти?


Плохиш   (2006-01-31 14:23:00) [11]


> msguns ©   (31.01.06 13:21) [8]

Ой, да ладно, ну взял название из TSQLQuery, кто ж виноват, что у разных собак, одинаковые кости по разному называются :-)


msguns   (2006-01-31 13:21:00) [12]

>Плохиш ©   (31.01.06 12:36) [6]

Врать не надо ;)


msguns   (2006-01-31 13:20:00) [13]

Как надо делать (рыба):

with TADOCommand.Create(nil) do
 try
  Connection := ADOTable1(или чего там законнекчено уже).Connection;
  CommandText := 'INSERT INTO Warhouses      
       (C_Name,C_Address,C_Phone,C_Manager) VALUES(:n,:a,:p,:m)';
  Parameters.ParamByName('n').Value := 'Sclad¹3';
  Parameters.ParamByName('a').Value := '33453';
  Parameters.ParamByName('p').Value := '24345';
  Parameters.ParamByName('m').Value := '5656561';
  try
    Execute;
  except
    ShowMessage('Ошибка !');
  end;
 finally  
  Free;
 end;


Плохиш   (2006-01-31 12:36:00) [14]


> Arazel ©   (30.01.06 20:01) [2]

Ещё существуют параметры. TADOQuery.Params


ivc_andr   (2006-01-31 12:24:00) [15]

Ega23 ©   (30.01.06 19:30) [1]

Упс....такой ответ уже был.
гы... провтыкал


ivc_andr   (2006-01-31 12:22:00) [16]

ADOQuery1.Open предполагает, что запрос вернет данные, а у тебя происзодит вставка. Поставь вместо .Open что то типа .Exec или .ExecSQL я просто не помню


Johnmen   (2006-01-30 20:54:00) [17]

Кавычки не двойные, а удвоенные одинарные.


Arazel   (2006-01-30 20:01:00) [18]

Вот ошибка:

Debugger Exception Notification

Error Message
'The name 'sclad?3' is not permitted in this contex.
Only constants, expressions, or variables allowed  here.
Column names are not permitted".


И  подскажите как правельно в  DELPHI выполнять запросы
то есть вместо ' подставлять это " я так понял
и ещё вместо  Open или Active что  бы выполнить  надо ExecSQL
хотя  этои по  названию понятно :)


Ega23   (2006-01-30 19:30:00) [19]


>   ADOQuery1.Open;


Команда Open подразумевает возврат набора данных.
У тебя же данные не возвращаются. Тебе ExecSQL надо делать.

З.Ы. Впредь текст ошибки приводи.


Наверх

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