![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Почему команда 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 надо делать.
З.Ы. Впредь текст ошибки приводи.