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

Вниз

Delphi 7 +ADO+ MSSQL 7.0   Найти похожие ветки 

 
Glorfindel ©   (2004-03-30 17:03) [0]

Использую для подключения к БД ADO...
лежат значит компонентики ADOConnection и ADOQuery...
в ADOConnection прописываю строку конекта и всё замечательно.
ADOConnection.Active:=true; всё прекрасно подключаюсь к БД.
теперь мне нужно ввести в БД данные... вот такой запрос у меня вышел
INSERT INTO t_client (name1r, name2r, name3r, name1e, name2e, name3e, name4r, name4e, pass1, pass2, dbirth, adress1, adress2, adress3, adress4, tel1, tel2, login, date, time) VALUES("1","2","3","4","5","6","7","8","9","10",27/03/2004,"12","13","14","15","16","17","abykov",29/03/2004,"16:04:49")  
все поля кроме dbirth и date(они DateTime) varchar"ы... вот

я так сделал...
описал название и тип ADOQuery.parameters...
потом
form1.ADOQuery1.Parameters.ParamByName("dbirth").Value:=DateTimePicker1.Date;так заполняю значения...
потом пишу так

form1.ADOQuery1.SQL.Clear;
form1.ADOQuery1.SQL.Add("INSERT INTO t_client (name1r, name2r, name3r, name1e, name2e, name3e, name4r, name4e, pass1, pass2, dbirth, adress1, adress2, adress3, adress4, tel1, tel2, login, dtnow)");
form1.ADOQuery1.SQL.Add(" VALUES (:name1r, :name2r, :name3r, :name1e, :name2e, :name3e, :name4r, :name4e, :pass1, :pass2, :dbirth, :adress1, :adress2, :adress3, :adress4, :tel1, :tel2, :login, :dtnow)");
form1.ADOQuery1.Active:=true;
вот... и мне пишет что мол ошибка ололо line2 incorrect syntax near ":""
вот

говорят у меня не видит параметров, т.к. ADOQuery лежит в Unit1 и яв unit2 делаю усе.... но в Unit1 прописан USES unit2....

////
почему может не видеть параметры.. параметры прописывал их имена в инспекторе.. м\б явно нужно написать их тип и не юзать имена а по индексам??


 
bushmen ©   (2004-03-30 17:08) [1]

Вам говорили другое - Вы пытаетесь сначала параметрам присвоить значения, а потом запрос пишите. А потом, Вы пытаетесь выполнить запрос, который ничего не возвращает, а используете Active. Надо использовать ExecSQL

Form1.ADOQuery1.ExecSQL;


 
Glorfindel ©   (2004-03-30 20:25) [2]


> Вам говорили другое - Вы пытаетесь сначала параметрам присвоить
> значения, а потом запрос пишите. А потом, Вы пытаетесь выполнить
> запрос, который ничего не возвращает, а используете Active.
> Надо использовать ExecSQL
>
> Form1.ADOQuery1.ExecSQL;

т.е. в начале надо написать

form1.ADOQuery1.SQL.Clear;
form1.ADOQuery1.SQL.Add("INSERT INTO t_client (name1r, name2r, name3r, name1e, name2e, name3e, name4r, name4e, pass1, pass2, dbirth, adress1, adress2, adress3, adress4, tel1, tel2, login, dtnow)");
form1.ADOQuery1.SQL.Add(" VALUES (:name1r, :name2r, :name3r, :name1e, :name2e, :name3e, :name4r, :name4e, :pass1, :pass2, :dbirth, :adress1, :adress2, :adress3, :adress4, :tel1, :tel2, :login, :dtnow)");
form1.ADOQuery1.Active:=true;
near ":""

вот... и мне пишет что мол ошибка ололо line2 incorrect syntax
.....................
а потом orm1.ADOQuery1.Parameters.ParamByName("dbirth").Value:=DateTimePicker1.Date;так заполняю значения...

так?
но почему у меня он пишет ошибку в SQL синтаксисе??? =((((


 
sniknik ©   (2004-03-30 23:51) [3]

? но почему у меня он пишет ошибку в SQL синтаксисе??? =((((
а ты бы не ругался если бы вместо ожидаемой зарплаты получил конвертик под нее? ;о)

а ведь оно ожидает в момент открытия (form1.ADOQuery1.Active:=true;) что все будет заполнено.


 
Glorfindel ©   (2004-03-31 14:06) [4]


> sniknik ©   (30.03.04 23:51) [3]
> ? но почему у меня он пишет ошибку в SQL синтаксисе??? =((((
> а ты бы не ругался если бы вместо ожидаемой зарплаты получил
> конвертик под нее? ;о)
>
> а ведь оно ожидает в момент открытия (form1.ADOQuery1.Active:=true;)
> что все будет заполнено.


дело в том что он даже не хочет делать Activ:=true; он грит типа ошибка синтаксиса около ":" вот


 
sniknik ©   (2004-03-31 14:22) [5]

естественно не хочет ты бы тоже крик у бухгалтерии с пустым конвертиком поднял.
ты их заполнил?


 
KSergey ©   (2004-03-31 14:47) [6]

До form1.ADOQuery1.Active:=true; надо параметры заполнять!!!

И обязательно еще сразу после заполнения запроса (перед ParamByName().Value:=..) сделать
form1.ADOQuery1.Parameters.ParseSQL(ADOQuery1.Text, True);

а иначе никаких параметров и в помине не будет.
Ну либо ручками их понапендюрить - но небрагодарное это дело...

А вообще - ну раз формируете SQL ручками - нафига с параметрами этими маяться? не проще ли сразу полный нормальный текст формировать, подставляя нужные значения в текст? По мне так наамного проще.


 
KSergey ©   (2004-03-31 14:48) [7]

Да, и не забыть про

> [1] bushmen ©   (30.03.04 17:08)


 
bushmen ©   (2004-03-31 15:08) [8]

Да я ему уже на sql.ru замучался это объяснять. Ну, не хочет человек этого понять и все!



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

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

Наверх




Память: 0.49 MB
Время: 0.035 c
1-1081173117
Leech
2004-04-05 17:51
2004.04.25
Количество строк в текстовом файле...


1-1081149715
Ivolg
2004-04-05 11:21
2004.04.25
Одноразовый запуск приложения


14-1081233338
Думкин
2004-04-06 10:35
2004.04.25
С днем рождения! 6 апреля.


3-1080719173
russko
2004-03-31 11:46
2004.04.25
WordWrap в DBGridEh


1-1081147580
СержК
2004-04-05 10:46
2004.04.25
Создание bat файла