Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Excel таблица в Delphi. Редактирование, удаление, поиск ??? [D7]


Hmm ©   (2004-10-30 13:22:00) 

Т.е. возможна ли работа с таблицей Excel, как с обыкновенной  таблицей (Paradox) или бд (Access)? Могу ли я какими-то спец. средствами, скажем, выводить её в DBGrid ?

Я не имею ввиду технологию OLE.


Hmm   (2004-10-31 08:00:00) [1]

Теперь всё ok! sniknik, спасибо!


sniknik   (2004-10-31 00:54:00) [2]

> задумывался, сделал вывод, что Table и запрос вещи несовместимые.
не, вывод должен быть такой, ADOTable работает через те же запросы (поэтому и ошибку дает от запроса), только контролировать ты их не можеш (нафига он тогда нужен?).  

> ошибка всёравно одна, что при юзании Table, что Query, DataSet не пробовал, но думаю суть сдесь не в этом.
верно, скорее всего не от компанента зависит. может от многих вещей от "неправильных" данных и "сложных" запросов до отсутствия индексов и безопасности на NTFS. (смысл в том, что чтото мешает создать связь между данными на диске и рекордсетом в памяти по которой осуществляются обновления этих данных)
кстати если будеш пробовать ADODataSet одним из вариантов можеш поставить
CommandType - cmdTableDirect
CommandText - Лист1$
CursorLocation - clUseServer
и открыть

> не могли бы вы запостить здесь строку connectionstring, чтобы мне было от чего отталкиваться.
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Книга1.xls;Extended Properties=Excel 8.0;Persist Security Info=False


Hmm   (2004-10-31 00:08:00) [3]

задумывался, сделал вывод, что Table и запрос вещи несовместимые. ошибка всёравно одна, что при юзании Table, что Query, DataSet не пробовал, но думаю суть сдесь не в этом.

Jet я уже пробовал, собственно:  Hmm ©   (30.10.04 15:58) [2]

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

(моя строка вот: Provider=MSDASQL.1;Persist Security Info=False;Mode=ReadWrite;Extended Properties="DSN=xls;DBQ=C:\1.xls;DefaultDir=C:;DriverId=790;FIL=excel 8.0;MaxBufferSize=2048;PageTimeout=5;")


sniknik   (2004-10-30 22:27:00) [4]

> "...драйвер ODBC Excel... должен использоваться обновляемый запрос"
говорю же используй jet, ODBC все одно ему запросы передает (если он есть) только коверкает их по своему, поэтому нежелательно его использовать.

> если я работаю с ADOTable
а вот это совсем зря. перешол на ADO, забудь про тейблы. query тоже не стоит, ADODataSet все заменяет, все что рекордсеты возврашает.

не задумался почему, при использовании ADO Tableошибка "должен использоваться обновляемый запрос"?


Hmm   (2004-10-30 21:25:00) [5]

2 AZDesign

всё было бы круто, если бы я имел эти 30-199$ на подобные вещи =)
фриварных, вы, конечно же, не знаете?


AZDesign   (2004-10-30 21:12:00) [6]

Есть компонент фирмы Axolot (по моему швеция) который работает напрямую с файлом Excel. У меня версия 1.23 стоила 30$
Недавно прислали рекламу на версию 2.0 - 199$
Очень удобно - нет ни OLE, ни ODBC


Hmm   (2004-10-30 21:03:00) [7]

хм... редактировать не получается, выдается ошибка: "...драйвер ODBC Excel... должен использоваться обновляемый запрос", о каком запросе может идти речь, если я работаю с ADOTable (собственно таже ошибка и с ADOQuery)?!


sniknik   (2004-10-30 20:34:00) [8]

редактировать можно, удалять нельзя, записи.
копируй в другую таблицу запросом после удалиш всю старую таблицу, либо перемешай на место удаляемых записи с конца, в конце же устанавливай значения в null, после любое изменение в екселе (или через OLE) скинет счетцик записей с пустых записей.


Hmm   (2004-10-30 20:01:00) [9]

большое спасибо, всё работает.

но, вот ведь проблемма - без редактирования не обойтись (нужно исключить повторяющиеся записив огромнойтаблице... подскажите выход, если он существует ?!

ЗЫ: именно при работе с Excel.


sniknik   (2004-10-30 19:06:00) [10]

> Лист1 ???
не
[Лист1$] если в запросе, иногда можно без скобок, имя в таблице аналогично но лучше таблицами не пользоваться.


jack128   (2004-10-30 17:02:00) [11]

Лист1 ???


Hmm   (2004-10-30 16:17:00) [12]

Извиняйте, поторопился! Помудрив немного установил таки соединение.

Теперь новая проблемма: как обозначить таблицу (которая находится на закладке Лист1 в excel файле) в св-ве Tablename(ADOTable) или в SQL (ADOQuery) ?


Hmm   (2004-10-30 15:58:00) [13]

2 sniknik

кидаю на форму TAdoConnection, использую мастер создания соединения указываю в качестве провайдера Microsoft JET 4.0 Ole DB Provider, перехожу на закладку - подключения - указываю Excel_таблицу - C:\1.xls, жму - проверить подключение, в ответ сообщение об ошибке: "... нераспозноваемый формат данных".

выозможно я что-то не так делаю? или не правильно понял суть этого загадочного ADO + Jet?


sniknik   (2004-10-30 15:02:00) [14]

ADO + Jet все перечисленное кроме удаления.


Наверх

Титульная страница Поиск, карта сайта Написать письмо