Главная страница
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.02 c
6-1177258394
Dmitry_177
2007-04-22 20:13
2007.12.30
Вопрос по клиентской части


15-1196492246
Vladimir_K
2007-12-01 09:57
2007.12.30
Заблокированный файл


8-1171918111
ы
2007-02-19 23:48
2007.12.30
книги


15-1195640433
VICTOR_
2007-11-21 13:20
2007.12.30
Не запускается Turbo Delphi 2006


2-1197019950
Иван1
2007-12-07 12:32
2007.12.30
Динамический массив