2009-03-13 5 views
0

Я бегу запрос SQL SELECT через соединение ADO к 2007 книги Excel с помощью следующего кода (используя специальную версию VBScript)SQL Query набегать книги Excel Возвращает усеченного текстовое поле

dim ado, rs 
set ado = CreateObject("ADODB.Connection") 
ado.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=workbook.xlsx;Extended Properties=""Excel 12.0 Xml;HDR=YES;IMEX=1"";" 
ado.open() 
set rs = ado.execute("SELECT * FROM [sheet1$]") 

который это несправедливо. Проблема в том, что любая ячейка с текстом длиной более 255 символов усечена; есть ли способ обойти это? Есть ли свойство в строке соединения, которое будет поддерживать это, или это вариант, который мне нужно изменить в документе excel? Я пробовал функцию CAST() MSSQL, но это просто вызывает ошибку при выполнении.

Любая помощь будет принята с благодарностью.

+0

Я также заметил, что иногда он возвращает больше 255 символов, но первые 255 символов находятся из правильной ячейки, а оставшийся текст, по-видимому, из случайной ячейки (что вызывает беспокойство, дополнительный текст отличается каждый раз). – 2009-03-13 12:38:09

+0

это (случайный приложенный текст) не тот случай, когда я использую формат файла 2003 и поставщик Jet в строке соединения – 2009-03-13 13:52:44

ответ

1

Я думаю, что вы используете вариант давнего ограничения в поставщике доступа к данным Excel. См. http://support.microsoft.com/default.aspx?scid=kb;EN-US;189897 для примера или google для тысяч других.

+0

, следуя информации, приведенной в статье kb, я изменил соответствующее значение в ключе регистрации HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Office \ 12.0 \ Access Connectivity Engine \ Engines \ Excel, но это не помогло устранить проблему; переход на реактив 4 с вышеупомянутым исправлением действительно сработал. – 2009-03-13 14:11:33

0

Вместо того, чтобы пытаться использовать CAST(), вы пытались использовать функцию CONVERT()?

+0

Я получаю ошибку «Неопределенная функция» при использовании CONVERT, просто попробовал ее – 2009-03-13 11:36:22

+0

@ TheGravyTalker: Вы использовали Преобразовать() правильно? Преобразовать (varchar (500), FieldName)? – TheTXI

+0

yep, точно так же, как – 2009-03-13 12:35:08