powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / ADO и GetFieldNams
4 сообщений из 4, страница 1 из 1
ADO и GetFieldNams
    #32314061
nika_ufc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый вечер Мастера.
Помогите c ADO, а если нет способа помочь меня, хоть скажите что это не решенная проблема и вы сами не знаете как это зделать, а то уже помучился я :( .
я хочу с помощью TADOQuery дастать все физические поля таблицы, то есть все экземпляры TFieldDefs, а не TFields.
когда я хотел с помощью TQuery дастать все поля таблицы, я обрашался к этому методу:

Query1.FieldDefs.Update;
Query1.FieldDefs.GetItemNames(ListBox1.Items);

сейчас я вынужден работать с ADOQuery и у меня такая конструкция:

Query1.FieldDefs.Update;
Query1.FieldDefs.GetItemNames(ListBox1.Items);

или такая (делает одно и тоже):

for i:=0 to ADOQuery1.FieldDefList.Count-1 do
ListBox1.Items.Add(ADOQuery1.FieldDefList.FieldDefs .DisplayName);

но беда в том что, что я не пробовал, не смог этим методом(и другими методами тоже, например ADODataSet1.Fielddefs.GetFieldNames(ListBox1.Items)) достать имя поля типа Blob. например при отктие файла animals.dbf из директорий: C:\Program Files\Common Files\Borland Shared\Data (для остальных типов всё ок). как это сделать?

может все получится, если как то зделать ovverride этого(GetFieldNames или GetItemNames) метода? но я немножка пакапался и выяснил, что обе и TQuery и TADOQuery наследуют этот метод (GetFieldNames) от общего предка TDataSet. если это так (и это точно так), тогда дело в ADO (или с DLL-ми может бить), потаму что Database Desktop показивает поля Blob без проблем(в смысле показивает само поле).
GetItemNames получает имена полей через ConnectionObject.OpenSchema а это "Provides direct access to the ADO connection object" т.е. уровень ниже некуда.
Все это мне нужно потому, что мое приложение должно открыть файли типа Access, Excel, DBase, Paradox и Comma delimated Files (т.е. файли типа txt или csv). BDE я не использую потому, что не хочу ставить их на клиентские машины. если вы мне предложите другую технологию, подход я буду весма благодарен.
как мне бить? и не забудьте этого пожалуйста:
Помогите c этим, а если нет способа помочь меня, хоть скажите что это не решенная проблема и вы сами не знаете как это зделать, а то уже помучился я.
заранее спасибо.
...
Рейтинг: 0 / 0
ADO и GetFieldNams
    #32314076
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор писал:Все это мне нужно потому, что мое приложение должно открыть файли типа Access, Excel, DBase, Paradox и Comma delimated Files (т.е. файли типа txt или csv).

Я так и не понял - для чего? Чего должна делать программа то?

-- Tygra's --
...
Рейтинг: 0 / 0
ADO и GetFieldNams
    #32314101
ZrenBy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может попробовать через Recordset ?

Код: plaintext
1.
2.
3.
  for n:= 1  to ADOQuery1.Recordset.Fields.Count do begin
    Memo1.Lines.Add(ADOQuery1.RecordSet.Fields[n- 1 ].Name+' | '+IntToStr(ADOQuery1.RecordSet.Fields[n- 1 ].Type_));
  end;
...
Рейтинг: 0 / 0
ADO и GetFieldNams
    #32314119
nika_ufc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>>>>tygra
>>>>Я так и не понял - для чего? Чего должна делать программа то?
Я пишу View/Editor.

>>>>ZrenBy
>>>Может попробовать через Recordset ?

>>> for n:=1 to ADOQuery1.Recordset.Fields.Count do begin
Memo1.Lines.Add(ADOQuery1.RecordSet.Fields[n-1].Name+' | '+IntToStr(ADOQuery1.RecordSet.Fields[n-1].Type_));
end;

выпадает ошибка: 'Access violation at address 004AAA37 in module project1.exe. Read of address 00000000'. process stoped.... и т.д.
что делать? уже никаких надежд нет :(
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / ADO и GetFieldNams
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]