Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Adodb.connection and multithreading / 25 сообщений из 30, страница 1 из 2
19.07.2006, 09:44
    #33862839
Slice
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adodb.connection and multithreading
Добрый день!!!! Вопрос у меня скорее всего не самый сложный но разобраться я не могу сам. Да и опят небольшой. а задача значит такая - НУжно прогу написать, которая обращается на сервак с процедурой и желательно это сделать с потоком. Отдельно обращение к процедуре на серваке все работает. А если я вставляю эту функцию в поток, то выделяется строка собъявдлением объекта ( Set cn=CreateObject ("Adodb.Connection") И надпись Automation Error. ПОмогите плиз!!!
...
Рейтинг: 0 / 0
19.07.2006, 10:19
    #33862935
Настенька
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adodb.connection and multithreading
Может, надо так объявлять

dim cn as new adodb.connection
...
Рейтинг: 0 / 0
19.07.2006, 10:22
    #33862946
Slice
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adodb.connection and multithreading
я пытался и через объекты и через NEW Adodb.Connection
...
Рейтинг: 0 / 0
19.07.2006, 10:47
    #33863032
Slice
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adodb.connection and multithreading
А тектс программы таков:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Public Sub Doing()
Dim sql As String
 Dim result As ADODB.Recordset
 Dim cn As ADODB.Connection
 Set cn = CreateObject("ADODB.Connection")
 '   Set cn = New ADODB.Connection
    With cn
        .Provider = "SQLOLEDB"
        .CommandTimeout =  0 
        .Properties("User Id") = "***"
        .Properties("Password") = "***"
        .Properties("Data Source") = "***"
        .Properties("Persist Security Info") = True
        .Open
        .DefaultDatabase = "**"
    End With
  '  Dim result As ADODB.Recordset
  sql = "Select * from [send&rec]"
  Set result = CreateObject("ADODB.recordset")
 ' With result
  result.Open sql, cтn
Это в Модуле
и в форме:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Private Sub cmdStart_Click()

    Dim lpThreadID As Long
cmdClose.Visible = False
    lThreadHandle1 = CreateThread(ByVal  0 &, _
                ByVal  0 &, _
                AddressOf Doing, _
                ByVal  0 &,  0 , lpThreadID)
    lEventHandle = CreateEvent(ByVal  0 &, _
                False, False, ByVal  0 &)

End Sub
...
Рейтинг: 0 / 0
19.07.2006, 12:58
    #33863591
TIKO
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adodb.connection and multithreading
Dim cn As Object
Set cn = CreateObject("ADODB.Connection")
или
dim cn as new adodb.connection
или
Dim cn As ADODB.Connection
set cn=new ADODB.Connection


Dim result As ADODB.Recordset
Set result = New ADODB.recordset
result.Open sql, cn

после всего этого
set cn=NOthing
set result=NOthing
...
Рейтинг: 0 / 0
19.07.2006, 13:37
    #33863766
Slice
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adodb.connection and multithreading
не помогло.....
во всех случаях выделяет строчку SETcn=.....
может там надо что-нть подключить (библиотеку например) или через класс модули??
...
Рейтинг: 0 / 0
19.07.2006, 14:05
    #33863888
TIKO
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adodb.connection and multithreading
еще раз выложи код с исправлениями
...
Рейтинг: 0 / 0
19.07.2006, 14:11
    #33863911
Slice
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adodb.connection and multithreading
Код: 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.
Public Sub Doing()

Dim sql As String
 Dim result As ADODB.Recordset
 Dim con As Object
 Dim i As Long
 i =  0 
 Set con = CreateObject("ADODB.Connection")
 With con
        .Provider = "SQLOLEDB"
        .CommandTimeout =  0 
        .Properties("User Id") = "popkov"
        .Properties("Password") = "12589"
        .Properties("Data Source") = "KHD"
        .Properties("Persist Security Info") = True
        .Open
        .DefaultDatabase = "mg"
    End With
  Set result = New ADODB.Recordset
  sql = "Select * from [send&rec]"
  result.Open sql, con
  Set con = Nothing
Set result = Nothing
End Sub
...
Рейтинг: 0 / 0
19.07.2006, 14:20
    #33863969
TIKO
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adodb.connection and multithreading
Dim con As Object
Dim rs As Object
Set con = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.RECORDSET")
con.Open "Provider=sqloledb;Data Source= ИМЯ_СЕРВЕРА ;Initial Catalog=KHD;User Id=popkov;Password=12589;"
rs.Open "select * from [send&rec]", con

Do Until rs.EOF
Debug.Print rs.fields(1).Value
rs.movenext
Loop

попробуй этот код
...
Рейтинг: 0 / 0
19.07.2006, 14:22
    #33863981
TIKO
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adodb.connection and multithreading
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Dim con As Object
Dim rs As Object
Set con = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.RECORDSET")
con.Open "Provider=sqloledb;Data Source=KHD;Initial Catalog=mg;User Id=popkov;Password=12589;"
rs.Open "select * from [send&rec]", con

Do Until rs.EOF
Debug.Print rs.fields( 1 ).Value
rs.movenext
Loop
поправочка
...
Рейтинг: 0 / 0
19.07.2006, 14:35
    #33864042
Slice
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adodb.connection and multithreading
У меня не работает, опять выделяет туже самую строку.
У тебя такая запись с поток работает?
...
Рейтинг: 0 / 0
19.07.2006, 14:40
    #33864065
TIKO
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adodb.connection and multithreading
SliceУ меня не работает, опять выделяет туже самую строку.
У тебя такая запись с поток работает?


у мня свои параметры сервера и работает
...
Рейтинг: 0 / 0
19.07.2006, 14:46
    #33864097
Alexey Kudinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adodb.connection and multithreading
SliceНУжно прогу написать, которая обращается на сервак с процедурой и желательно это сделать с потоком. А асинхронное получение данных не подойдет ?
...
Рейтинг: 0 / 0
19.07.2006, 14:47
    #33864099
Slice
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adodb.connection and multithreading
значит делов не в этой функции. как у тебя это все выглядит? объявление потоков и вызов функции обращения к БД? ты используешь сласс модуль или просто модуль?
...
Рейтинг: 0 / 0
19.07.2006, 14:50
    #33864115
Slice
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adodb.connection and multithreading
автор
А асинхронное получение данных не подойдет ?


скорее всего нет, так как мне надо чтоб окно не "висло" во время выполнения запроса на серваке. Чтоб я его свернуть мог или перетащить
...
Рейтинг: 0 / 0
19.07.2006, 14:53
    #33864133
buser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adodb.connection and multithreading
Варианты
1. - не делать так... adAsyncExecute в основном потоке...
2. - в каждом новом потоке перед соз-м COM вызывать CoInitialize
...
Рейтинг: 0 / 0
19.07.2006, 14:57
    #33864161
buser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adodb.connection and multithreading
CoUninitialize - тоже можно :)
...
Рейтинг: 0 / 0
19.07.2006, 15:27
    #33864308
Slice
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adodb.connection and multithreading
TICO
у мня свои параметры сервера и работает


А можно как-нть увидить полный код твой проги :)
...
Рейтинг: 0 / 0
19.07.2006, 15:50
    #33864384
TIKO
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adodb.connection and multithreading
Slice TICO
у мня свои параметры сервера и работает


А можно как-нть увидить полный код твой проги :)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Private Sub Command1_Click()
Dim con As Object
Dim rs As Object
Set con = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.RECORDSET")
con.Open "Provider=sqloledb;Data Source=(local);Initial Catalog=pubs;User Id=sa;Password=;"
rs.Open "select * from jobs", con

Do Until rs.EOF
    Debug.Print rs.fields( 1 ).Value
rs.movenext
Loop


End Sub
...
Рейтинг: 0 / 0
19.07.2006, 16:18
    #33864521
Slice
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adodb.connection and multithreading
Tico, ты видимо меня не понял.... А где потоки??? вот смотри у меня в модуле есть вот это :
Код: 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.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
Option Explicit
Public Declare Function CreateThread Lib "kernel32" _
            (ByVal lpThreadAttributes As Any, _
            ByVal dwStackSize As Long, _
            ByVal lpStartAddress As Long, _
            lpParameter As Any, _
            ByVal dwCreationFlags As Long, _
            lpThreadID As Long) As Long

Public Declare Sub Sleep Lib "kernel32" _
            (ByVal dwMilliseconds As Long)

Public Declare Function TerminateThread Lib "kernel32" _
            (ByVal hThread As Long, _
            ByVal dwExitCode As Long) As Long

Public Declare Function TerminateProcess Lib "kernel32" _
            (ByVal hProcess As Long, _
            ByVal uExitCode As Long) As Long
Public Declare Function GetCurrentProcess Lib "kernel32" () As Long
Public Declare Function CreateEvent& Lib "kernel32" _
            Alias "CreateEventA" _
            (ByVal lpEventAttributes As Long, _
            ByVal bManualReset As Long, _
            ByVal bInitialState As Long, _
            ByVal lpname As String)
Public lThreadHandle1 As Long
'Public lThreadHandle2 As Long
Public lEventHandle As Long
Public Sub Doing()
Dim sql As String
 Dim result As Object
 Dim con As Object
 Dim i As Long
 i =  0 
 Set con = CreateObject("ADODB.Connection")
 With con
        .Provider = "SQLOLEDB"
        .CommandTimeout =  0 
        .Properties("User Id") = "***"
        .Properties("Password") = "***"
        .Properties("Data Source") = "***"
        .Properties("Persist Security Info") = True
        .Open
        .DefaultDatabase = "***"
    End With
  sql = "Select * from [send&rec]"
  Set result = CreateObject("ADODB.recordset")
  result.Open sql, con
  ' sql = "Select * from [Send&rec]"
If Not result.EOF Then
        result.MoveFirst
        While Not result.EOF
        i = i +  1 
frmOutput.txtResult = Str(i)
result.MoveNext
        Wend
       Else
       frmOutput.Shape1.FillColor = &HFF00&
End If
Set con = Nothing
Set result = Nothing
End Sub

Public Sub Main()
    frmOutput.Show
End Sub

А это в форме
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Private Sub cmdStart_Click()

    Dim lpThreadID As Long
cmdClose.Visible = False
    lThreadHandle1 = CreateThread(ByVal  0 &, _
                ByVal  0 &, _
                AddressOf Doing, _
                ByVal  0 &,  0 , lpThreadID)
    lEventHandle = CreateEvent(ByVal  0 &, _
                False, False, ByVal  0 &)

End Sub
Private Sub Form_Unload(Cancel As Integer)

    If lThreadHandle1 >  0  Then
        Call TerminateThread(lThreadHandle1, ByVal  0 &)
    End If

    Call TerminateProcess(GetCurrentProcess, ByVal  0 &)

End Sub
здеся че не так????
...
Рейтинг: 0 / 0
19.07.2006, 16:29
    #33864579
Melkiades
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adodb.connection and multithreading
Вы можете выложить проект целиком?
Приведенный код у меня отваливается после первого же нажатия кнопки.
...
Рейтинг: 0 / 0
19.07.2006, 16:37
    #33864608
buser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adodb.connection and multithreading
Дохтор, меня все игнорируют... :)
А так?
Код: plaintext
1.
2.
3.
Declare Function CoInitialize Lib "ole32.dll" (ByVal _
	pvReserved As Long) As Long
Declare Sub CoUninitialize Lib "ole32.dll" ()

Код: 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.
30.
31.
32.
33.
34.
35.
36.
37.
Public Sub Doing()
Dim sql As String
 Dim result As Object
 Dim con As Object
 Dim i As Long
 i =  0 
Call CoInitialize( 0 )

 Set con = CreateObject("ADODB.Connection")
 With con
        .Provider = "SQLOLEDB"
        .CommandTimeout =  0 
        .Properties("User Id") = "***"
        .Properties("Password") = "***"
        .Properties("Data Source") = "***"
        .Properties("Persist Security Info") = True
        .Open
        .DefaultDatabase = "***"
    End With
  sql = "Select * from [send&rec]"
  Set result = CreateObject("ADODB.recordset")
  result.Open sql, con
  ' sql = "Select * from [Send&rec]"
If Not result.EOF Then
        result.MoveFirst
        While Not result.EOF
        i = i +  1 
frmOutput.txtResult = Str(i)
result.MoveNext
        Wend
       Else
       frmOutput.Shape1.FillColor = &HFF00&
End If
Set con = Nothing
Set result = Nothing
Call CoUninitialize 
End Sub
...
Рейтинг: 0 / 0
19.07.2006, 16:57
    #33864709
Slice
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adodb.connection and multithreading
busera в ПРЕЗИДЕНТЫ!!!!!!!! ты просто ГУРУ программирования!!!!!!!! Красавчег пиши исче!!!! подскажи мне вот что, почему не работало и что делают эти процедурки из библиотеки ole32.dll????
...
Рейтинг: 0 / 0
19.07.2006, 17:12
    #33864782
buser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adodb.connection and multithreading
Я просто любопытен... :)
авторThis function initializes the COM library on the current thread and identifies the concurrency model as single-thread apartment (STA). Applications must initialize the COM library before they can call COM library functions other than CoGetMalloc and memory allocation functions.
Там их до икса... Поиск в гугле по Declare Function CoInitialize Lib "ole32.dll" первая ссылка...
...
Рейтинг: 0 / 0
19.07.2006, 17:16
    #33864797
Slice
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Adodb.connection and multithreading
ок. Спасибо огромное всем, кто откликнулся на просьбу помощи. Отдельное спасибо buser
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Adodb.connection and multithreading / 25 сообщений из 30, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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