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

Вниз

не могу сделать INSERT через ADO в MSSQL базу   Найти похожие ветки 

 
Добрый   (2007-08-26 15:07) [0]

помогите плиз, может кто знает! я делаю вот так:

DataModule2.ADOQuery_AddComp.SQL.Add("DECLARE @FIO varchar(50)");
DataModule2.ADOQuery_AddComp.SQL.Add("SET @FIO="+Edit1.Text);
DataModule2.ADOQuery_AddComp.SQL.Add("INSERT INTO RemontPC (FIO, date_priem, Status) VALUES (");
DataModule2.ADOQuery_AddComp.SQL.Add("@FIO,"+DateTimeToStr(Now)+","+"""В ремонте"")");
DataModule2.ADOQuery_AddComp.ExecSQL;

во время выполнения этого запроса вылетает ошибка "Неправильно определен объект Parameter. Предоставлены несовместимые или неполные сведения". Что не так?


 
Johnmen ©   (2007-08-26 15:16) [1]

INSERT INTO RemontPC (FIO, date_priem, Status) VALUES (:FIO, :date_priem, :Status)

Читать справку (Delphi) про параметрические запросы.


 
Добрый   (2007-08-26 15:24) [2]

А при чём тут Delphi? Ведь запрос по идее уходит на сервер, и ошибка приходит оттуда, или я не прав?


 
Johnmen ©   (2007-08-26 15:52) [3]

Я показал, как делать классически, универсально и оптимально, а не через ж...

> А при чём тут Delphi?

Это у тебя надо спросить, почему на сайте дельфистов ты вопрос задаёшь...:)


 
Добрый   (2007-08-26 16:01) [4]

ну лан, спасибо, пойду хелп читать)))


 
MsGuns ©   (2007-08-26 21:50) [5]

DataModule2.ADOQuery_AddComp.SQL.Add("SET @FIO="+QuotedStr(Edit1.Text));


 
sniknik ©   (2007-08-26 23:34) [6]

MsGuns ©   (26.08.07 21:50) [5]
не поможет, ошибка в [0] не изза этого, а изза "+DateTimeToStr(Now)+", т.к. присутствуют двоеточия в строке.

в [1] с параметрами самый верный вариант. зачем еще чтото выдумывать?


 
Добрый   (2007-08-27 11:20) [7]

итак, мастера, почитал я и сделал вот так:

with DataModule2.ADOQuery_AddComp do begin
       SQl.Clear;
       SQl.Add("INSERT INTO RemontPC ");
       SQl.Add("(FIO, date_in, Status) ");
       SQl.Add("VALUES (:FIO, :Date, ""В ремонте"")");
       Parameters.ParamByName("FIO").Value := Edit1.Text;
       Parameters.ParamByName("Date").Value := DateToStr(Now);
       ExecSQL
       end;

Теперь все работает!

Большое спасибо!!!


 
sniknik ©   (2007-08-27 12:04) [8]

вот это - DateToStr лишнее, и чревато ошибками. убери.

а еще замени ADOQuery на ADOCommand.



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

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

Наверх




Память: 0.48 MB
Время: 0.017 c
2-1196779438
dmdel
2007-12-04 17:43
2007.12.30
Просмотр в Fb 1.5


15-1196324063
stas
2007-11-29 11:14
2007.12.30
ODBC драйвера на Win x64


15-1196457288
deras
2007-12-01 00:14
2007.12.30
Вопрос стоимости сопровождения собственного ПО


2-1196716154
alolya
2007-12-04 00:09
2007.12.30
Интерфейс для передачи класса в dll


15-1196353568
manevil
2007-11-29 19:26
2007.12.30
Дифф. уравнение в excel