Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Через OraOLEDB выдает - Метод доступа не является параметрическим / 15 сообщений из 15, страница 1 из 1
14.05.2015, 14:30
    #38958709
Gabit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Через OraOLEDB выдает - Метод доступа не является параметрическим
Доброе время суток !

Делаю выгрузку данных из базы Oracle.
Код такой:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
Sub ExportData()
    Dim CN As ADODB.Connection
    Dim rst As New ADODB.Recordset
    
    Set CN = CreateObject("ADODB.Connection")
    Application.StatusBar = "Подключение к БД..."
    

OraConnect:
        UName = "User1"
        PWord = "pass1"
        SDbName = "DbName"
        
        s_str = "Provider=OraOLEDB.Oracle;Data Source=" & SDbName & ";User ID=" & UName & ";Password=" & PWord & ";PLSQLRSet=1;"
        CN.ConnectionString = s_str
        CN.Open
    
    s_str = "select * from my_table"
    Application.StatusBar = "Выборка ..."
    
    rst.Open s_str, CN
    
    Set NewB = Workbooks.Add()
    Set NewSh = NewB.Worksheets(1)
    
    ' Выгружаю шапку
    For i = 1 To rst.Fields.Count
        NewSh.Cells(1, i).Value = rst.Fields(i - 1).Name
    Next i
    
    ' Выгружаю данные
    NewSh.Range("A2").CopyFromRecordset rst
    
    rst.Close
    CN.Close
    
    Set CN = Nothing
    Set rst = Nothing
    
    Application.StatusBar = "Завершен"
    MsgBox ("Данные выгружены")

End Sub



Выходит ошибка на этой строке:
Код: vbnet
1.
    NewSh.Range("A2").CopyFromRecordset rst



Текст ошибки - Метод доступа не является параметрическим .
Подскажите как решить проблему.
...
Рейтинг: 0 / 0
14.05.2015, 14:39
    #38958726
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Через OraOLEDB выдает - Метод доступа не является параметрическим
По коду ошибки искали?
...
Рейтинг: 0 / 0
14.05.2015, 15:12
    #38958803
Gabit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Через OraOLEDB выдает - Метод доступа не является параметрическим
Как я понял проблема в данных,
Чтобы выяснить какие данные не нравятся
Эту строку:
Код: vbnet
1.
NewSh.Range("A2").CopyFromRecordset rst



Заменил на такую:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
    Do While Not rst.EOF
        j = j + 1
        Application.StatusBar = Trim(j)
        For i = 1 To rst.Fields.Count
            NewSh.Cells(j, i).Value = rst.Fields(i - 1).Value
        Next i
        rst.MoveNext
    Loop



И ошибка возникла где дата равна - 20.09.0204 0:00:00.
Данные исправлять нельзя, как сделать чтобы он игнорировал низкие даты ?
...
Рейтинг: 0 / 0
14.05.2015, 15:15
    #38958811
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Через OraOLEDB выдает - Метод доступа не является параметрическим
в where добавить условие по дате
...
Рейтинг: 0 / 0
14.05.2015, 15:33
    #38958842
Gabit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Через OraOLEDB выдает - Метод доступа не является параметрическим
Эта запись должна быть выгружена.
...
Рейтинг: 0 / 0
14.05.2015, 15:37
    #38958853
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Через OraOLEDB выдает - Метод доступа не является параметрическим
в VBA такие даты не поддерживаются , там только до 01-01-1900
...
Рейтинг: 0 / 0
14.05.2015, 15:40
    #38958858
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Через OraOLEDB выдает - Метод доступа не является параметрическим
Можно подменять дату в запросе
...
Рейтинг: 0 / 0
14.05.2015, 15:40
    #38958859
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Через OraOLEDB выдает - Метод доступа не является параметрическим
придётся вам выгружать даты в текстовом формате, а потом писать функцию преобразования

вот почитайте про проблему: http://exceluser.com/formulas/earlydates.htm
...
Рейтинг: 0 / 0
14.05.2015, 20:46
    #38959209
Gabit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Через OraOLEDB выдает - Метод доступа не является параметрическим
Через ODBC прошел, наверное из-за того что он даты выгрузил в числовом формате.
...
Рейтинг: 0 / 0
14.05.2015, 20:49
    #38959212
Gabit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Через OraOLEDB выдает - Метод доступа не является параметрическим
Остается тогда только в текстовом формате выгрузить дату этого столбца.
Спасибо Всем !
...
Рейтинг: 0 / 0
26.05.2015, 08:14
    #38968310
Gabit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Через OraOLEDB выдает - Метод доступа не является параметрическим
Как можно поменять выгрузку даты в числовой формате с OraOLEDB ?
Такой метод использует ODBC.
...
Рейтинг: 0 / 0
27.05.2015, 08:17
    #38969371
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Через OraOLEDB выдает - Метод доступа не является параметрическим
GabitКак можно поменять выгрузку даты в числовой формате с OraOLEDB ?
Такой метод использует ODBC.
не отдавайтесь на милость преобразований какого-либо метода доступа или системы.
Конвертируйте сами в запросе. Будет намного лучше.
...
Рейтинг: 0 / 0
27.05.2015, 08:35
    #38969379
Gabit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Через OraOLEDB выдает - Метод доступа не является параметрическим
Для этого запрос надо будет переписывать каждый раз.
Обычно всегда идет
select * from table
...
Рейтинг: 0 / 0
27.05.2015, 08:42
    #38969384
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Через OraOLEDB выдает - Метод доступа не является параметрическим
Gabitselect * from tableэто плохой подход почти во всех ситуациях...
...
Рейтинг: 0 / 0
28.05.2015, 09:48
    #38970390
Gabit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Через OraOLEDB выдает - Метод доступа не является параметрическим
HandKotне отдавайтесь на милость преобразований какого-либо метода доступа или системы.
Конвертируйте сами в запросе. Будет намного лучше.
Не знаю как это произошло, сейчас уже все даты выгружаются в числовом формате.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Через OraOLEDB выдает - Метод доступа не является параметрическим / 15 сообщений из 15, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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