Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.02.19;
Скачать: CL | DM;

Вниз

Почему команда Insert не работает в DELPHI (ADOQuery)   Найти похожие ветки 

 
Arazel ©   (2006-01-30 19:23) [0]

Хотя работает в 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;


 
Ega23 ©   (2006-01-30 19:30) [1]


>   ADOQuery1.Open;


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

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


 
Arazel ©   (2006-01-30 20:01) [2]

Вот ошибка:

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
хотя  этои по  названию понятно :)


 
Johnmen ©   (2006-01-30 20:54) [3]

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


 
ivc_andr ©   (2006-01-31 12:22) [4]

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


 
ivc_andr ©   (2006-01-31 12:24) [5]

Ega23 ©   (30.01.06 19:30) [1]

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


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


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

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


 
msguns ©   (2006-01-31 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;


 
msguns ©   (2006-01-31 13:21) [8]

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

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


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


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

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


 
kot137 ©   (2006-02-03 13:05) [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 символов. У меня больше. Как это можно обойти?


 
msguns ©   (2006-02-03 13:20) [11]

property CommandText: WideString;


 
Shirson ©   (2006-02-03 13:21) [12]

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

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


 
kot137 ©   (2006-02-03 14:11) [13]


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

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


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


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

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


 
kot137 ©   (2006-02-03 14:18) [15]


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

           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)";


 
Johnmen ©   (2006-02-03 14:21) [16]

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:26) [17]


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

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


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

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


 
msguns ©   (2006-02-03 14:36) [18]

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

И напрасно


 
Shirson ©   (2006-02-03 15:40) [19]

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

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



Страницы: 1 вся ветка

Текущий архив: 2006.02.19;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.047 c
2-1139089031
Вячеслав Бессонов
2006-02-05 00:37
2006.02.19
TMemo


15-1138354595
Gbp
2006-01-27 12:36
2006.02.19
Нужен Delphi программист для выполнения разовой работы.


3-1135237012
krb
2005-12-22 10:36
2006.02.19
Импорт из db-Vista


2-1138826027
serko
2006-02-01 23:33
2006.02.19
Form


15-1138284610
Dec
2006-01-26 17:10
2006.02.19
gif-рисунок