Excel достал. Что то не так, а вот что?

Программирование на Visual Basic for Applications
Vini
Обычный пользователь
Обычный пользователь
 
Сообщения: 93
Зарегистрирован: 29.03.2004 (Пн) 5:40

Excel достал. Что то не так, а вот что?

Сообщение Vini » 23.11.2004 (Вт) 4:21

Привет, Форумчане!
Ну вот дошел до той точки когда все не работает.

Код: Выделить всё
Dim Conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim ConnStr As String
Dim sql As String

Private Sub Workbook_Open()
ConnStr = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = M:\02.xls;Extended Properties = Excel 8.0;"
Conn.Open (ConnStr)
    sql = "Select DCN from [Sheet2$]"
    rs.Open sql, ConnStr
   

Conn.Close
End Sub

Все ссылки расставил.
Если убрать sql запрос и rs , и прогнать соединение, то ошибок не возникает.
Значит ошибка в sql, а где?
Помогите, пожалуйста.!

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 23.11.2004 (Вт) 4:47

Мож таки не тот connection string?
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyExcel.xls;Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"""

То есть все extended в кавычках...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Vini
Обычный пользователь
Обычный пользователь
 
Сообщения: 93
Зарегистрирован: 29.03.2004 (Пн) 5:40

Сообщение Vini » 23.11.2004 (Вт) 5:00

Да, но если не тот COnnection String то вот тут уже бы была ошибка
Conn.Open (ConnStr)

А ее нет, она возникает когда SQL запрос идет. :?: :?:

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 23.11.2004 (Вт) 5:02

Если не указать HDR=Yes в соединении, то как он найдёт столбец DCN?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Vini
Обычный пользователь
Обычный пользователь
 
Сообщения: 93
Зарегистрирован: 29.03.2004 (Пн) 5:40

Сообщение Vini » 23.11.2004 (Вт) 5:12

GSerg писал(а):Если не указать HDR=Yes в соединении, то как он найдёт столбец DCN?


Спасибо, ваша строчка заработала, спасибо за науку. :)
Вот как еще мне удалось подключиться и без всяких вопросов заработало

Код: Выделить всё
ConnStr = "Provider=MSDASQL.1;Persist Security Info=False;Data Source=excel;Initial Catalog=E:\db\01"
Conn.Open (ConnStr)

Vini
Обычный пользователь
Обычный пользователь
 
Сообщения: 93
Зарегистрирован: 29.03.2004 (Пн) 5:40

Сообщение Vini » 26.11.2004 (Пт) 5:31

Продолжает доставать.
Теперь проблема:
В столбце нет заголовка, (ну и ф.г с ним), пытаюсь проверить или все ОК.
select sum(f2) from [sheet1$]

а он сволоч начинает сумировать со второй строки.
А если всунуть заголовок столбца и попросить
select sum(summa) from [sheet1$]

Тогда все в полном ажуре.

Что я не так делаю? :cry: :x
Помогитеееееееееееееееее!!!!

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 26.11.2004 (Пт) 9:59

Мож в строке указать HDR=No? :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Gloom
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 200
Зарегистрирован: 23.11.2004 (Вт) 15:57
Откуда: СПб

Сообщение Gloom » 26.11.2004 (Пт) 10:17

Vini писал(а):Продолжает доставать.
Теперь проблема:
В столбце нет заголовка, (ну и ф.г с ним), пытаюсь проверить или все ОК.
select sum(f2) from [sheet1$]

а он сволоч начинает сумировать со второй строки.
А если всунуть заголовок столбца и попросить
select sum(summa) from [sheet1$]

Тогда все в полном ажуре.

Что я не так делаю? :cry: :x
Помогитеееееееееееееееее!!!!

Используй джетовский провайдер oledb:
BUG: Excel ODBC Driver Disregards the FirstRowHasNames or Header Setting

Vini
Обычный пользователь
Обычный пользователь
 
Сообщения: 93
Зарегистрирован: 29.03.2004 (Пн) 5:40

Сообщение Vini » 26.11.2004 (Пт) 18:39

Спасибо, вот что помогло.
http://support.microsoft.com/default.as ... us;Q295646

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

На Sheet1 есть поле Charges в виде General(Основной), и поле User
Пытаюсь сгруппировать по User
Код: Выделить всё
    sql = "Insert INTO [Excel 8.0;Database=" & App.Path & _
    "\" & reportName & "].[Sheet2$] (user, Charges) Select User, sum(Charges) FROM [Sheet1$] group by User order by User "
    Conn.Execute (sql)


И все бы ничего, только данные на Sheet2 приходят как текст. Я попробовал перед началом ввода данных
Перевести столбец в NumberFormat = "0.00"
Все едино, как побороть то этот недуг?
Спасибо.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 27.11.2004 (Сб) 4:08

IMEX=0? :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Vini
Обычный пользователь
Обычный пользователь
 
Сообщения: 93
Зарегистрирован: 29.03.2004 (Пн) 5:40

Сообщение Vini » 27.11.2004 (Сб) 6:15

GSerg писал(а):IMEX=0? :)

Спасибо, огромное. Только скажите, а где об этом звере хорошо по русски написано?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 27.11.2004 (Сб) 7:11

Ну не то чтобы по-русски, но www.connectionstrings.com :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Vini
Обычный пользователь
Обычный пользователь
 
Сообщения: 93
Зарегистрирован: 29.03.2004 (Пн) 5:40

Сообщение Vini » 27.11.2004 (Сб) 7:49

Я с этого сайта и брал строку, а вот не засек что мелким шрифтом написано. Спасибо.


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 51

    TopList