Jojobets |
Отправлено: 06.06.2005, 10:52 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 16
|
Визуально-все просто. Кинул на форму компоненты TADOConnection, TADOTable. Настроил подключение к существующей таблице, добавил поля в редакторе полей. И можно работать.
Однако при динамическом создании таблицы возникают проблемы.
Допустим,
TADOTable *tab1=new TADOTable(Form1);
tab1->Connection=con1;
tab1->TableName="existingtablename";
Не смотря на указание свойства TableName связи между tab1 и существующей таблицей (existingtablename) нет.
Как их связать? |
|
Konstantine |
Отправлено: 06.06.2005, 11:21 |
|
Мастер участка
Группа: Модератор
Сообщений: 545
|
а open() ?
если можешь — код давай
|
|
Guest |
Отправлено: 06.06.2005, 11:34 |
|
Не зарегистрирован
|
Работает
CODE |
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TADOTable *tbl1 = new TADOTable(Form1);
tbl1->Connection = con1;
tbl1->TableName = "p8";
tbl1->Active = true;
DataSource1->DataSet = tbl1;
ShowMessage(1);
DataSource1->DataSet = NULL;
tbl1->Active = false;
delete tbl1;
}
| |
|
Jojobets |
Отправлено: 06.06.2005, 13:57 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 16
|
попробуй добавить в таблицу tbl1 запись и увидишь, что ничего не работает |
|
Guest |
Отправлено: 06.06.2005, 15:03 |
|
Не зарегистрирован
|
Попробовал.
Действительно странно — все работает.
CODE |
ADOTable2->Active = false;
TADOTable *tbl1 = new TADOTable(Form1);
tbl1->Connection = con1;
tbl1->TableName = "p8";
tbl1->Active = true;
DataSource1->DataSet = tbl1;
tbl1->Insert();
tbl1->FieldByName("Nom")->AsInteger = 22;
tbl1->Post();
ShowMessage(2);
DataSource1->DataSet = NULL;
tbl1->Active = false;
delete tbl1;
DataSource1->DataSet = ADOTable2;
ADOTable2->Active = true;
|
Скорее всего у вас проблемы с настройками соединения или доступа — похоже стоит RO. |
|
Konstantine |
Отправлено: 06.06.2005, 18:01 |
|
Мастер участка
Группа: Модератор
Сообщений: 545
|
посмотри ещё настройки ODBC, у меня недавно было там ReadOnly и на запись не работало, хотя вроде через него и не работал...
строка коннекта какая?
|
|
Jojobets |
Отправлено: 06.06.2005, 21:34 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 16
|
DataSource1->DataSet = tbl1;
Нафига здесь DataSource1?
|
|
AVC |
Отправлено: 07.06.2005, 08:43 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
QUOTE |
DataSource1->DataSet = tbl1;
Нафига здесь DataSource1?
|
Что бы наблюдать (в сетке) за происходящим. |
|
Jojobets |
Отправлено: 07.06.2005, 09:01 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 16
|
Проблема такова, что при открытиии таблицы, в которой набор TFields пуст, выдается ошибка Could not convert variant of type (Null) into type (String). |
|
AVC |
Отправлено: 07.06.2005, 09:11 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
QUOTE |
Настроил подключение к существующей таблице, ...
и
... таблицы, в которой набор TFields пуст ...
|
Как вам удалось создать таблицу без полей?
QUOTE |
Could not convert variant of type (Null) into type (String)
|
Ну он действительно не может преобразовать Null к пустой строке. Можно сделать самому.
Обрисуйте порядок действий и проблему более точно.
PS. Лично я предпочитаю не работать с полями, созданными в редакторе полей, а пользуюсь методами FieldByName и FindField
Отредактировано AVC — 07/06/2005, 08:14 |
|
Jojobets |
Отправлено: 07.06.2005, 16:02 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 16
|
Проблема: при запуске программе из под оболочки билдера (IDE) возникает ошибка (см вкладыш). Если запускать отдельно, никаких проблем. Файлы прилагаю.
Такая проблема исчезает, если в набор TFields таблицы добавить поля, причем неважно как — визуально или динамически. Это и есть глюк? Как его пофиксить?
|
|
AVC |
Отправлено: 07.06.2005, 16:41 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
QUOTE |
Проблема: при запуске программе из под оболочки билдера (IDE) возникает ошибка (см вкладыш). Если запускать отдельно, никаких проблем
|
Такое бывает если Builder пытается обработать ошибки раньше приложения. Посмотрите настройки Tools / Debugger Options / Os Exceptions. Я ставлю все user programm. Да и остальные вкладки посмотрите.
Файлы посмотрю (скорее всего только завтра).
Полистал — у меня 5 и не стоят многие из компонентов, имеющиеся у вас — следовательно не могу запустить exe или пересобрать существующий проект. По тексту unit1 сделаю свой такой же, а там посмотрим.
Отредактировано AVC — 07/06/2005, 15:42 |
|
AVC |
Отправлено: 07.06.2005, 16:56 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Сделал, ошибки получить не смог. Все работает нормально.
На всякий случай прилагаю проект.
|
|
Jojobets |
Отправлено: 07.06.2005, 21:00 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 16
|
Работает только таким образом (см. файл). Я там указал поставщика данных MS Jet 4.0. OLE DB Provider.
Если в качестве поставщика используется MS OLE DB Provider for ODBC Drivers, то возникает тот самый глюк, о котором я говорил.
Всем спасибо за помощь!
|
|