Главная страница
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
15-1196164673
shark
2007-11-27 14:57
2007.12.30
Вопрос по 3D эффекты.


1-1192066406
Dmitry S
2007-10-11 05:33
2007.12.30
OleVariant без автоматического подключения Variants


6-1177258394
Dmitry_177
2007-04-22 20:13
2007.12.30
Вопрос по клиентской части


6-1177336439
socket
2007-04-23 17:53
2007.12.30
TServerSocket and TClientSocket


2-1196421856
Yury_FK
2007-11-30 14:24
2007.12.30
aProcessEntry32 Глюченный???