Вниз
Скачать: CL | DM;

ADOQuery - проблемы   Найти похожие ветки 

← →
Anarki ©   (2004-03-10 18:17) [0]

Поставил ADOQuery для того, чтобы сделать запрос добавления записи.

Компонент ADD_QUERY находится вместе с DataSourcr_1 на модуле DataModule_1.


DataModule_Main.ADD_QUERY.ConnectionString := "Provider=MSDASQL.1;Data Source=my_database;
DataModule_Main.ADD_QUERY.DataSource := DataModule_Main.DataSource_1;
DataModule_Main.ADD_QUERY.SQL.Add("INSERT INTO table_1 (name) VALUES(EDIT_NAME.Text)");
DataModule_Main.ADD_QUERY.ExecSQL;


Это всё на обработчике кнопки.
Но при нажатии на кнопку вылетает exception:
[Microsoft][ODBC Microsoft Access Driver]

Хотя другой компонет - ADODataSet, который коннектиться к БД через этот ConnectionString пашет без проблем.


← →
Johnmen ©   (2004-03-10 18:22) [1]

1. Посмотри как у тебя в ADODataSet "делается" запрос.
2. "Объясни" драйверу, что такое EDIT_NAME.Text :)
3. Объясни нам, зачем этому ADD_QUERY нужен источник данных :))


← →
Anarki ©   (2004-03-10 18:30) [2]


> 1. Посмотри как у тебя в ADODataSet "делается" запрос.

дело в том, что с ADODataSet никакхи траблов. Там обычный запрос
SELECT * FROM...


> 2. "Объясни" драйверу, что такое EDIT_NAME.Text :)

это как???


> . Объясни нам, зачем этому ADD_QUERY нужен источник данных
> :))

ну не нужен - уберу эту строку.
p.s. а зачем соб-нно не нужен?


← →
Johnmen ©   (2004-03-10 18:33) [3]

>это как???

Это намёк...

>p.s. а зачем соб-нно не нужен?

А первый спросил ! :))) Зачем нужен ?


← →
menart ©   (2004-03-10 18:33) [4]

DataModule_Main.ADD_QUERY.SQL.Add("INSERT INTO table_1 (name)
VALUES("+EDIT_NAME.Text+")");


Хотябы так...


← →
menart ©   (2004-03-10 18:35) [5]

EDIT_NAME.Text - я понял что это TEdit? Или я не прав, а так access не знает что это такое :)


← →
Anarki ©   (2004-03-10 18:41) [6]


> DataModule_Main.ADD_QUERY.SQL.Add("INSERT INTO table_1 (name)
>
> VALUES("+EDIT_NAME.Text+")");
>
> Хотябы так...

та же ошибка осталась... :(


← →
Anarki ©   (2004-03-10 18:42) [7]


> EDIT_NAME.Text - я понял что это TEdit? Или я не прав, а
> так access не знает что это такое

да, это TEdit. Если Access его не знает, то записать значение этого TEdit"a в БД?


← →
menart ©   (2004-03-10 18:45) [8]


> DataModule_Main.ADD_QUERY.DataSource := DataModule_Main.DataSource_1;

выкинуть


> DataModule_Main.ADD_QUERY.SQL.Add("INSERT INTO table_1 (name)
> VALUES(EDIT_NAME.Text)");

у тебя сколько полей в таблице? Посмотри есть ли в accesse таблице пустые строки > нет ?


← →
Johnmen ©   (2004-03-10 18:47) [9]

>Anarki ©

Прошу прощения, ты не пробовал книги читать по данной тематике ?
Или хотя бы хелпы ?


← →
Vlad ©   (2004-03-10 18:50) [10]


> Anarki ©   (10.03.04 18:42) [7]

А пробовал ли ты посмотреть хотя бы showmessage"м результат составления своего запроса (SQL.Text) ?
Думаю, если попробуешь - кое что прояснится :-)


← →
Anarki ©   (2004-03-10 18:51) [11]


> у тебя сколько полей в таблице?

5 полей. Но я в остальные ничего не добавляю - он разве автоматом туда пустые строки не добавит?


> Посмотри есть ли в accesse таблице пустые строки > нет ?

Нет.


← →
menart ©   (2004-03-10 18:52) [12]


> Хотя другой компонет - ADODataSet, который коннектиться
> к БД через этот ConnectionString пашет без проблем

Делай всё через ADOConnect? проще, удобнее и т.п. А потом на ADOConnect вешай ADOQuery


← →
menart ©   (2004-03-10 18:54) [13]


> > Посмотри есть ли в accesse таблице пустые строки > нет
> ?
>
> Нет.

а далжно быть да!


← →
Anarki ©   (2004-03-10 18:56) [14]


> Делай всё через ADOConnect? проще, удобнее и т.п. А потом
> на ADOConnect вешай ADOQuery

ОК, попробую.


← →
Johnmen ©   (2004-03-10 18:56) [15]

>а далжно быть да!

а зачем да ?


← →
menart ©   (2004-03-10 19:04) [16]


> >а далжно быть да!
>
> а зачем да ?


потому что он туда ничего не добавляет, оставляет пустые поля, у меня у самого были такие проблемы


← →
Johnmen ©   (2004-03-10 19:07) [17]

>потому что он туда ничего не добавляет, оставляет пустые поля,
>у меня у самого были такие проблемы

Э-э-э... Как это не добавляет ??? А INSERT это что ?
Где оставляет пустые поля ???

Твои проблемы неясны. То есть абсолютно...


← →
Vlad ©   (2004-03-10 19:08) [18]


> menart ©   (10.03.04 19:04) [16]

он туда ничего не добавляет. Даже пустых полей.
Запрос который привел автор просто не рабочий.


← →
menart ©   (2004-03-10 19:10) [19]

INSERT INTO table_1 (name) VALUES(EDIT_NAME.Text)
Добавляет одно поле, а у него в таблице их 5, остальнные остаются пустые, а в конструкции указано что это незя :)


← →
Vlad ©   (2004-03-10 19:12) [20]


> INSERT INTO table_1 (name) VALUES(EDIT_NAME.Text)
> Добавляет одно поле, а у него в таблице их 5, остальнные
> остаются пустые, а в конструкции указано что это незя :)

Еще раз. Этот запрос ничего не добавляет


← →
Johnmen ©   (2004-03-10 19:13) [21]

>Добавляет одно поле, а у него в таблице их 5, остальнные

Не поле, а запись. Разница есть ?

>остаются пустые, а в конструкции указано что это незя :)

В какой конструкции ?


← →
menart ©   (2004-03-10 19:14) [22]


> Еще раз. Этот запрос ничего не добавляет

а что он делает? :0


← →
Vlad ©   (2004-03-10 19:15) [23]


> menart ©   (10.03.04 19:14) [22]
>
> > Еще раз. Этот запрос ничего не добавляет
>
> а что он делает? :0

Он инициирует ошибку драйвера.


← →
Anarki ©   (2004-03-10 19:29) [24]

Так, прошу не базарить! :)

У меня всё получилось.
Я добавил ADOConnection и теперь через него коннектюсь.

Тока вот проблема одна не решилась.

Когда я делаю

DataModule_Main.ADO_QUERY.SQL.Add("INSERT INTO table_1(name) VALUES(""EDIT_NAME.Text)"");

То он мне не добавляет не значение EDIT_NAME"a а само выражение "EDIT_NAME.Text".

Пробовал делатьЖ

DataModule_Main.ADO_QUERY.SQL.Add("INSERT INTO table_1(name) VALUES(:EDIT_NAME.Text)");

Вылезает exception:

Parameter Object is improperly defined. Inconsistent or incomplete information was provided.
что делать?


← →
Mike Kouzmine ©   (2004-03-10 19:38) [25]

Почитай умные книжки (хотя хелпа за глаза хватит).
Q.SQL.Add("INSERT INTO table_1(name) VALUES(:E)");
q.params[0].asstring := edit1.text;
q.execsql;


← →
Anarki ©   (2004-03-10 19:50) [26]


> Почитай умные книжки (хотя хелпа за глаза хватит).
> Q.SQL.Add("INSERT INTO table_1(name) VALUES(:E)");
> q.params[0].asstring := edit1.text;
> q.execsql;

Да, интересно где н ADOQuery вы взяли свойство params???

У него есть Parameters, но у последнего нету AsString.


← →
Johnmen ©   (2004-03-10 23:23) [27]

У тебя что F1 отломана ? Или читать не умеешь ?


← →
menart ©   (2004-03-11 11:22) [28]


> Anarki ©   (10.03.04 19:29) [24]



> DataModule_Main.ADO_QUERY.SQL.Add("INSERT INTO table_1(name)
> VALUES(""EDIT_NAME.Text)"");


DataModule_Main.ADO_QUERY.SQL.Add("INSERT INTO table_1(name)
VALUES(""+EDIT_NAME.Text+")");
тогда ты добавишь значение EDIT_Name



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

Скачать: CL | DM;



Память: 0.51 MB
Время: 0.032 c
7-1080425126
Raptoridze
2004-03-28 01:05
2004.04.11
подгрузить vxd


3-1079008733
Andrew
2004-03-11 15:38
2004.04.11
Неправильная работа TDBLookupComboBox


3-1079169535
YurikGl
2004-03-13 12:18
2004.04.11
Рекурсивный запрос


3-1079356027
Floppy
2004-03-15 16:07
2004.04.11
Версии MDAC?


1-1082890875
hgd
2004-04-25 15:01
2004.04.11
Как вставить картинку с alfa в формате png




   Наверх