Форум: "Базы";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.032 c