![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Delphi 7 +ADO+ MSSQL 7.0 [D7, MSSQL]
Glorfindel © (2004-03-30 17:03:00)Использую для подключения к БД 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-31 15:08:00) [1]Да я ему уже на sql.ru замучался это объяснять. Ну, не хочет человек этого понять и все!
KSergey (2004-03-31 14:48:00) [2]Да, и не забыть про
> [1] bushmen © (30.03.04 17:08)
KSergey (2004-03-31 14:47:00) [3]До form1.ADOQuery1. Active:=true; надо параметры заполнять!!!
И обязательно еще сразу после заполнения запроса (перед ParamByName().Value:=..) сделать
form1.ADOQuery1.Parameters.ParseSQL(ADOQuery1.Text, True);
а иначе никаких параметров и в помине не будет.
Ну либо ручками их понапендюрить - но небрагодарное это дело...
А вообще - ну раз формируете SQL ручками - нафига с параметрами этими маяться? не проще ли сразу полный нормальный текст формировать, подставляя нужные значения в текст? По мне так наамного проще.
sniknik (2004-03-31 14:22:00) [4]естественно не хочет ты бы тоже крик у бухгалтерии с пустым конвертиком поднял.
ты их заполнил?
Glorfindel (2004-03-31 14:06:00) [5]
> sniknik © (30.03.04 23:51) [3]
> ? но почему у меня он пишет ошибку в SQL синтаксисе??? =((((
> а ты бы не ругался если бы вместо ожидаемой зарплаты получил
> конвертик под нее? ;о)
>
> а ведь оно ожидает в момент открытия (form1.ADOQuery1.Active:=true;)
> что все будет заполнено.
дело в том что он даже не хочет делать Activ:=true; он грит типа ошибка синтаксиса около ':' вот
sniknik (2004-03-30 23:51:00) [6]? но почему у меня он пишет ошибку в SQL синтаксисе??? =((((
а ты бы не ругался если бы вместо ожидаемой зарплаты получил конвертик под нее? ;о)
а ведь оно ожидает в момент открытия (form1.ADOQuery1.Active:=true;) что все будет заполнено.
Glorfindel (2004-03-30 20:25:00) [7]
> Вам говорили другое - Вы пытаетесь сначала параметрам присвоить
> значения, а потом запрос пишите. А потом, Вы пытаетесь выполнить
> запрос, который ничего не возвращает, а используете 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 синтаксисе??? =((((
bushmen (2004-03-30 17:08:00) [8]Вам говорили другое - Вы пытаетесь сначала параметрам присвоить значения, а потом запрос пишите. А потом, Вы пытаетесь выполнить запрос, который ничего не возвращает, а используете Active. Надо использовать ExecSQL
Form1.ADOQuery1.ExecSQL;