![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Добавить поле в DBF, используя ADO [D6, dBase, FoxPro]
Витёк © (2005-02-15 03:42:00)Здравствуйте, Мастера.
Есть задача - сабж и есть такой код
procedure TForm1.Button1Click(Sender: TObject);
begin
ADOCommand1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=с:\db;Extended Properties=dBASE IV';
ADOCommand1.CommandType := cmdText;
ADOCommand1.CommandText := 'ALTER TABLE table.dbf ADD COLUMN NewFld text(15)';
ADOCommand1.Execute;
end;
Поле замечательно добавляется, если в DBF-ке нет записей, а в противном случае выскакивает ошибка "Операция не поддерживается для таблицы, содержащей данные" :(
Какой провайдер мне нужен, чтобы добавлять/удалять поля в непустых таблицах? BDE и сторонние компоненты просьба не предлагать. Код будет перекладываться на VBA
Буду признателен за любую помощь!
sniknik (2005-02-15 08:29:00) [1]а поменять тип базы нельзя? т.к. у тебя явное несоответствие запросов, говориш BDE не предлагать а сам неявно его используеш.
в сушествуюшем варианте придется тебе изменения структуры делать на пустой таблице, а данные после переливать.
можно использовать
Provider=MSDASQL.1;Persist Security Info=False;Extended Properties="DSN=Visual FoxPro Tables;UID=;SourceDB=с:\db;SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;Null=Yes;Deleted=Yes;"
и
ALTER TABLE table ADD NewFld Char(15)
но боюсь структуру таблицы оно тебе "покорежит" до неузнаваемости. ;)