Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Excel->Paradox, Вытащить данные 
:(
    Опции темы
dser
Дата 10.2.2003, 03:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 3.2.2003
Где: Украина Харьковск ая обл.

Репутация: нет
Всего: нет



В одной из тем я вычитал, как из книги Excel "вытащить" данные через компоненты ADO и ODBC. Добраться до таблицы Excel я смог не только с помощью ADO, но и с помощью ODBC и компонентов BDE.

Сделал как сказано, но в DBGrid показывает только четыре записи, а их в таблице Excel аж 600.
ПОЧЕМУ?.
Это не все. Я создал таблицу типа Paradox с такими же по типу полями, как и таблица Excel (три текстовых поля) и пытался скопировать все записи из таблицы Excel в Paradox - скопировано все те же четыре записи.
А как мне скопировать все 600 записей.
PM MAIL   Вверх
Vit
Дата 10.2.2003, 05:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Попробуй создать таблицу в Excel через кверю: "Create Table...", тогда должно читаться всё нормально. Собственно прикол в том что Excel допускает вещи несопоставимые с реальными таблицами:

1) Разнородные данные в одном поле
2) Интерпретация данных как разнородных в одном поле (например "1" может интерпретироваться как цифра или буква)
3) Нет чёткой типизации столбцов
4) Возможность вставки объектов в столбцы
5) Возможность объединений или разделений столбца

Поэтому драйверы баз данных зачастую не в состоянии правильно распознать форматы, например у тебя столбец значений:

1
2
3
4
A
B
C

По первой строке драйвер решает что поле числовое, а в дальнейшем наткнувшись на букву его "выбивает"...

Если ты создашь листы таблицы при помощи квери через драйвер БД, то структура будет чётко типизирована и такие листы буду читаться гораздо лучше.


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
dser
Дата 10.2.2003, 07:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 3.2.2003
Где: Украина Харьковск ая обл.

Репутация: нет
Всего: нет



Но я так и сделал, затем в пустой, созданный с помощью команды CREATE TABLE... скопировал данные (средствами Excel). Дело все в том, что "послать" в Excel данные - проще, а вот извлечь (нормально извлечь, как у меня и получилось) можно только с помощью компонента F1Book на странице ActiveX, но при установке программы на другой компьютер требуется регистрация этого компонента или установка Delphi, а с регистрацией компонента F1Book у меня проблемы - все такие умные - сделай так, да сделай сяк, а полного описания никто пока не дал, а отвечать на вопросы лишь бы себя показать и я умею. Пользователю моей программы сложно (и долго) копировать данные из Excel в F1Book. В Delphi работа с компонентом F1Book - проще по переносу данных в таблицу Paradox.
PM MAIL   Вверх
Vit
Дата 10.2.2003, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Цитата(dser @ 9.2.2003, 22:40)
но при установке программы на другой компьютер требуется регистрация этого компонента

А в чём собственно проблемы с регистрацией компонента (сорри я с этим компонентом не работал, так что знания общие) - обычным способом не регистрируется? Какие ошибки выдаёт при регистрации?


PS. Я могу попробовать решить проблему - не могли бы скинуть мне по email Ваш Excel файл - я попробую разобраться как его конвертировать.


Модератор:

По поводу полного описания - его никто не даст, по работе с Excel через OLEAutomation и DAO API написано несколько книг, страниц по 800 каждая - они приближаются к наиболее полному описанию. Очень сомнительно что бы кто-то решился опубликовать столь же полные трактаты здесь в форуме, мы пытаемся ответить на поставленные вопросы соответственно нашему опыту и возможностям, но никто не гарантирует решение вашей проблемы, стараются помочь, но вовсе не обязательно смогут. Если же Вы решительно настоены найти человека который решит Ваши проблемы гарантировано, то тогда давайте объявление о найме программиста или коллектива программистов, которые гарантировано решат Вашу проблему.




--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
dser
Дата 11.2.2003, 07:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 3.2.2003
Где: Украина Харьковск ая обл.

Репутация: нет
Всего: нет



Если использовать эту процедуру, то какие файлы или типы файлов (*.ocx; *.dll) нужно регистрировать?
Хотелось бы получать, если конечно возможно, хотябы малейшее описание действий процедуры.
Взять хотябы эту.
procedure RegisterTypeLibrary(FileName:string);
var
Name: WideString;
HelpPath: WideString;
TypeLib: ITypeLib;//что за TypeLib
begin
if LoadTypeLib(PWideChar(WideString(FileName)), TypeLib)=S_OK then//что проверяется в этой строке
begin
Name := FileName;
HelpPath := ExtractFilePath(ModuleName);//что такое ModuleName, что так и писать или вместо этого
//нужно что-то подставлять.
RegisterTypeLib(TypeLib, PWideChar(Name), PWideChar(HelpPath));
end;
end;
Прошу прощения за назойливость.

[QUOTE]
Я могу попробовать решить проблему - не могли бы скинуть мне по email Ваш Excel файл - я попробую разобраться как его конвертировать.

Да можно ничего и не присылать, создайте файл (Например MyExcel.xls) и с помощью технологии ADO и ODBC подключитель к нему (ADOConnection), затем в ADOQuery (подключенному к ADOConnection) создайте запрос типа:
CREATE TABLE mytable(
pole1 varchar (20),
pole2 varchar (20),
pole3 varchar (20))
в этой книге появится еще один лист.
Эти поля можете заполнить. Попробуйте заполнить более четырех строк.
Подключите компонент ADOTable к ADOConnection, установите TableName:='mytable'.
Подключите DBGrid и Вы все увидите.
Правда перед тем как открыть для просмотра эту книгу, нужно разорвать соединение с набором данных.
Ну, а если будет желание для принятия моего файла, то нужно на такие случаи оставлять E-Mail.
С уважением dser.

Это сообщение отредактировал(а) dser - 11.2.2003, 07:38
PM MAIL   Вверх
Vit
Дата 11.2.2003, 10:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Именно так я всегда создаю файл и читается он нормально, а email мой: [email protected] (я его не скрывал)


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Medved
Дата 12.2.2003, 03:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



Цитата
Ну, а если будет желание для принятия моего файла, то нужно на такие случаи оставлять E-Mail.

Ну а если же посмотреть на синие кнопочки, под сообщением какого-либо зарегистрированного пользователя, то четко можно различить и кнопочку "E-mail"

И еще, насколько я понял вопрос, нужно использовать в своей прграмме компонент, на вкладке палитры компонентов ActiveX - TF1Book. Если я не ошибаюсь, то используя этот компонент, не требуется что-либо регистрировать, все необходимое компилируется в exe-шник.



--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Vit
Дата 12.2.2003, 03:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Цитата(Pegas @ 11.2.2003, 18:04)
И еще, насколько я понял вопрос, нужно использовать в своей прграмме компонент, на вкладке палитры компонентов ActiveX - TF1Book. Если я не ошибаюсь, то используя этот компонент, не требуется что-либо регистрировать, все необходимое компилируется в exe-шник.

Скорее всего ошибаешься. Название вкладки говорит само за себя, а ActiveX не прикомпилируются к exe - их надо поставлять отдельно с exe и на клиентском компьютере регистрировать


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Medved
Дата 12.2.2003, 09:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



Самое интересное, что ни ты не я не можем однозначно ответить на этот вопрос. smile.gif хорошо, я попробу поэксперементировать.


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
dser
  Дата 15.2.2003, 06:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 3.2.2003
Где: Украина Харьковск ая обл.

Репутация: нет
Всего: нет



Цитата

Самое интересное, что ни ты не я не можем однозначно ответить на этот вопрос.  хорошо, я попробу поэксперементировать

Даже не надо эксперементировать. Vit прав. Это же элементарно. Я бы не стал задавать кучу вопросов по поводу регистрации ActiveX или копирования данных из Excel без компонента F1Book, но ни как не TF1Book. hehe.gif
PM MAIL   Вверх
Medved
Дата 15.2.2003, 08:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



Да, я проверил..... (как говориться пока своими глазами не увижу)... Вит прав.


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Medved
Дата 15.2.2003, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



Вообщем поковырялся я тут и нашел решение решение Вашей проблемы.

В Кулибе сказано:
Цитата

Чтобы использовать любые элементы управления VBX с компилированным Delphi EXE-файлом, вам необходимо распространить BIVBX11.DLL (расположен в каталоге \WINDOWS\SYSTEM - Borland при установке копирует его туда).


У меня WinXP, с установленными Delphi 5,6,7.

Поискав такой файл, я ничего не нашел. Видимо это актуально для старых версий Delphi. Хотя уверенно сказать не могу.

Затем решил отследить, какие DLL использует приложение с этим компонентом. Это всего одна форма, с компонентом TF1Book и кнопкой выхода. Оказалось что при его работе вызываются функции из следующих "специфичных" DLL: vcf132.ocx и Oc30.dll.

Перегрузившись в Win98 (это совершенно девственная у меня система, на ней не установленно ни одной программы), где мое приложение раньше отказывалось работать, я зарегистрировал vcf132.ocx (regsvr32 vcf132.ocx) и у меня все заработало.

vcf132.ocx лежит в Win95/98/Me Windows/System, а в NT/2000/XP в Windows/System32.


Если требуется программно зарегистрировать OCX:

Код

var
   OCXHand: THandle;
   RegFunc: TDllRegisterServer;   //прежде необходимо добавить OLECtl в список используемых модулей
begin
   OCXHand:= LoadLibrary('c:\windows\system\vcf132.ocx');
   RegFunc:= GetProcAddress(OCXHand, 'DllRegisterServer');  //чуствительность к регистру?
   if RegFunc <> 0 then ShowMessage('Ошибка!');
   FreeLibrary(OCXHand);
end;  


Для обратной процедуры, "отрегистрации" OCX, Вам необходимо всего лишь заменить 'DllRegisterServer' на 'DllUnregisterServer'.

Некоторые пояснения:

OCX - специфический форма dll, поэтому Вы можете загрузить ее в память, используя API функцию LoadLibrary(). OCX экспортирует две функции, осуществляющие ее регистрацию и "отрегистрацию". Для получения адреса этих функций используется соответствующая функция GetProcAddress. После этого остается только вызвать необходимую функцию.


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Гость_Serg
Дата 11.3.2005, 16:03 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Господа на тему F1Book не подскажете как в нем построить график. Я строю а он берет обе колонки как значения по Y а по оси X отсебятину несет

  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1067 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.