Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.47 MB
Время: 0.039 c
14-1080633357
syte_ser78
2004-03-30 11:55
2004.04.25
Фильтр русских значений


14-1081071413
ChengrMan
2004-04-04 13:36
2004.04.25
За что :(


1-1081403999
Tornado
2004-04-08 09:59
2004.04.25
Почему не загружается весь файл?


3-1079917727
saNat
2004-03-22 04:08
2004.04.25
Создание новой таблицы Paradox


1-1081584683
KEBZ
2004-04-10 12:11
2004.04.25
Button и Label





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский