Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / MyODBC E_FAIL Подскажите что не так / 10 сообщений из 10, страница 1 из 1
16.05.2008, 15:21
    #35317451
MyAlex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MyODBC E_FAIL Подскажите что не так
Код: plaintext
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.
Private Sub Button0_Click()
    Dim ConnectionString As String
    ConnectionString = "DRIVER={MySQL ODBC 5.1 Driver};SERVER=localhost;PORT=3306;DATABASE=testdb;USER=sa;PASSWORD=pass;OPTION=3;"
    Dim MySQLConnection As New ADODB.Connection
    MySQLConnection.ConnectionString = ConnectionString
    MySQLConnection.CursorLocation = adUseClient
    MySQLConnection.Open
    If MySQLConnection.State = adStateOpen Then
        Debug.Print "Connection success"
        Dim MySQLRecordset As New ADODB.Recordset
        MySQLRecordset.CursorLocation = adUseClient
        MySQLRecordset.CursorType = adOpenStatic
        MySQLRecordset.Open "SELECT Id, MessageDate, MessageValue FROM odbctest", MySQLConnection, adOpenForwardOnly, adLockReadOnly
        If MySQLRecordset.State = adStateOpen Then
            Dim RowCount As Long
            RowCount = MySQLRecordset.RecordCount
            Debug.Print "Recordset success"; RowCount
            While Not MySQLRecordset.EOF
                Debug.Print "Id:" & MySQLRecordset!Id & " Date:" & MySQLRecordset!MessageDate & " Value:" & MySQLRecordset!MessageValue
                MySQLRecordset.MoveNext
            Wend
            MySQLRecordset.Close
        Else
            Debug.Print "Recordset failed"
        End If
        MySQLConnection.Close
    Else
        Bedug.Print "Connection failed"
    End If
End Sub

Этот код выполняется нормально. Однако если в запрос добавить текстовое поле MessageText :
Код: plaintext
SELECT Id, MessageDate, MessageValue, MessageText FROM odbctest
выдает ошибку при открытии MySQLRecordset - E_FAIL
Типы полей:
Код: plaintext
1.
2.
3.
Id - INTEGER AUTOINC
MessageDate - DATETIME
MessageValue - DOUBLE
MessageText - CHAR( 32 )
...
Рейтинг: 0 / 0
16.05.2008, 17:48
    #35318026
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MyODBC E_FAIL Подскажите что не так
MyAlexвыдает ошибку при открытии MySQLRecordset - E_FAIL
А в Err что находится при ошибке?
Код: plaintext
1.
2.
3.
    If Err <>  0  Then
        MsgBox Err.Source & "-->" & Err.Description, , "Error"
    End If
...
Рейтинг: 0 / 0
27.05.2008, 09:52
    #35336522
MyAlex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MyODBC E_FAIL Подскажите что не так
Код: plaintext
1.
2.
3.
4.
5.
6.
...
On Error Resume Next
        MySQLRecordset.Open "SELECT Id, MessageDate, MessageValue, MessageText FROM odbctest", MySQLConnection, adOpenForwardOnly, adLockReadOnly
If Err <>  0  Then
        Debug.Print "ErrNo: " & Err.Number & " ErrMessage: " & Err.Description
End If
...


Код: plaintext
ErrNo: - 2147467259  ErrMessage: Поставщик данных или другая служба вернули состояние E_FAIL.

Вот такие пироги ...
...
Рейтинг: 0 / 0
27.05.2008, 13:18
    #35337342
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MyODBC E_FAIL Подскажите что не так
а если так:

Код: plaintext
SELECT Id, MessageDate, MessageValue, `MessageText` as T FROM odbctest
...
Рейтинг: 0 / 0
27.05.2008, 13:38
    #35337422
MyAlex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MyODBC E_FAIL Подскажите что не так
Konst_Oneа если так:

Код: plaintext
SELECT Id, MessageDate, MessageValue, `MessageText` as T FROM odbctest


попробовал. результат тот же, то есть E_FAIL .

Может что не так с версиями ODBC драйверов от Microsoft/MySQL или Access?
...
Рейтинг: 0 / 0
27.05.2008, 14:27
    #35337573
Errors
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MyODBC E_FAIL Подскажите что не так
Что появляется в коллекции MySQLConnection.Errors?
...
Рейтинг: 0 / 0
27.05.2008, 14:29
    #35337581
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MyODBC E_FAIL Подскажите что не так
может проблемы с кодировкой в поле, char(32) не очень удачный тип.
...
Рейтинг: 0 / 0
28.05.2008, 08:53
    #35339097
MyAlex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MyODBC E_FAIL Подскажите что не так
ErrorsЧто появляется в коллекции MySQLConnection.Errors?

Код: plaintext
1.
2.
3.
4.
5.
6.
Description: Поставщик данных или другая служба вернули состояние E_FAIL.
HelpContext:  0 
HelpFile: ""
NativeError:  0 
Number: - 2147467259 
Source: Microsoft Cursor Engine
SQLState: ""

Может со свойствами курсора что не так?
...
Рейтинг: 0 / 0
28.05.2008, 08:55
    #35339101
MyAlex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MyODBC E_FAIL Подскажите что не так
Konst_Oneможет проблемы с кодировкой в поле, char(32) не очень удачный тип.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
CREATE TABLE `odbctest` (
  `Id` int( 10 ) unsigned NOT NULL auto_increment,
  `MessageText` char( 32 ) character set cp1251 collate cp1251_bin NOT NULL,
  `MessageDate` datetime NOT NULL,
  `MessageValue` double NOT NULL,
  PRIMARY KEY  (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=cp1251;
...
Рейтинг: 0 / 0
28.05.2008, 10:57
    #35339412
MyAlex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MyODBC E_FAIL Подскажите что не так
УРА-А-А ! ! ! ЗАРАБОТАЛО ! ! !
Лечится очень просто, как оказалось:

Код: plaintext
SELECT Id, MessageDate, MessageValue, CONVERT(MessageText USING utf8) AS MessageText FROM odbctest

Всем большое спасибо за участие.
Кстати, если поля DATETIME (и не только) возвращают NULL все нормально интерпретируется - как пустая строка или ноль, в случае числовых данных. То есть дополнительных преобразований не требуется. На решение натолкнуло это.

UNICODE RULES ! ! !
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / MyODBC E_FAIL Подскажите что не так / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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