|
|
|
Adodb.connection and multithreading
|
|||
|---|---|---|---|
|
#18+
Добрый день!!!! Вопрос у меня скорее всего не самый сложный но разобраться я не могу сам. Да и опят небольшой. а задача значит такая - НУжно прогу написать, которая обращается на сервак с процедурой и желательно это сделать с потоком. Отдельно обращение к процедуре на серваке все работает. А если я вставляю эту функцию в поток, то выделяется строка собъявдлением объекта ( Set cn=CreateObject ("Adodb.Connection") И надпись Automation Error. ПОмогите плиз!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2006, 09:44 |
|
||
|
Adodb.connection and multithreading
|
|||
|---|---|---|---|
|
#18+
Может, надо так объявлять dim cn as new adodb.connection ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2006, 10:19 |
|
||
|
Adodb.connection and multithreading
|
|||
|---|---|---|---|
|
#18+
я пытался и через объекты и через NEW Adodb.Connection ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2006, 10:22 |
|
||
|
Adodb.connection and multithreading
|
|||
|---|---|---|---|
|
#18+
А тектс программы таков: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. и в форме: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2006, 10:47 |
|
||
|
Adodb.connection and multithreading
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2006, 12:58 |
|
||
|
Adodb.connection and multithreading
|
|||
|---|---|---|---|
|
#18+
не помогло..... во всех случаях выделяет строчку SETcn=..... может там надо что-нть подключить (библиотеку например) или через класс модули?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2006, 13:37 |
|
||
|
Adodb.connection and multithreading
|
|||
|---|---|---|---|
|
#18+
еще раз выложи код с исправлениями ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2006, 14:05 |
|
||
|
Adodb.connection and multithreading
|
|||
|---|---|---|---|
|
#18+
Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2006, 14:11 |
|
||
|
Adodb.connection and multithreading
|
|||
|---|---|---|---|
|
#18+
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 попробуй этот код ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2006, 14:20 |
|
||
|
Adodb.connection and multithreading
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2006, 14:22 |
|
||
|
Adodb.connection and multithreading
|
|||
|---|---|---|---|
|
#18+
У меня не работает, опять выделяет туже самую строку. У тебя такая запись с поток работает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2006, 14:35 |
|
||
|
Adodb.connection and multithreading
|
|||
|---|---|---|---|
|
#18+
SliceУ меня не работает, опять выделяет туже самую строку. У тебя такая запись с поток работает? у мня свои параметры сервера и работает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2006, 14:40 |
|
||
|
Adodb.connection and multithreading
|
|||
|---|---|---|---|
|
#18+
SliceНУжно прогу написать, которая обращается на сервак с процедурой и желательно это сделать с потоком. А асинхронное получение данных не подойдет ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2006, 14:46 |
|
||
|
Adodb.connection and multithreading
|
|||
|---|---|---|---|
|
#18+
значит делов не в этой функции. как у тебя это все выглядит? объявление потоков и вызов функции обращения к БД? ты используешь сласс модуль или просто модуль? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2006, 14:47 |
|
||
|
Adodb.connection and multithreading
|
|||
|---|---|---|---|
|
#18+
автор А асинхронное получение данных не подойдет ? скорее всего нет, так как мне надо чтоб окно не "висло" во время выполнения запроса на серваке. Чтоб я его свернуть мог или перетащить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2006, 14:50 |
|
||
|
Adodb.connection and multithreading
|
|||
|---|---|---|---|
|
#18+
Варианты 1. - не делать так... adAsyncExecute в основном потоке... 2. - в каждом новом потоке перед соз-м COM вызывать CoInitialize ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2006, 14:53 |
|
||
|
Adodb.connection and multithreading
|
|||
|---|---|---|---|
|
#18+
CoUninitialize - тоже можно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2006, 14:57 |
|
||
|
Adodb.connection and multithreading
|
|||
|---|---|---|---|
|
#18+
TICO у мня свои параметры сервера и работает А можно как-нть увидить полный код твой проги :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2006, 15:27 |
|
||
|
Adodb.connection and multithreading
|
|||
|---|---|---|---|
|
#18+
Slice TICO у мня свои параметры сервера и работает А можно как-нть увидить полный код твой проги :) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2006, 15:50 |
|
||
|
Adodb.connection and multithreading
|
|||
|---|---|---|---|
|
#18+
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. А это в форме Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2006, 16:18 |
|
||
|
Adodb.connection and multithreading
|
|||
|---|---|---|---|
|
#18+
Вы можете выложить проект целиком? Приведенный код у меня отваливается после первого же нажатия кнопки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2006, 16:29 |
|
||
|
Adodb.connection and multithreading
|
|||
|---|---|---|---|
|
#18+
Дохтор, меня все игнорируют... :) А так? Код: plaintext 1. 2. 3. Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2006, 16:37 |
|
||
|
Adodb.connection and multithreading
|
|||
|---|---|---|---|
|
#18+
busera в ПРЕЗИДЕНТЫ!!!!!!!! ты просто ГУРУ программирования!!!!!!!! Красавчег пиши исче!!!! подскажи мне вот что, почему не работало и что делают эти процедурки из библиотеки ole32.dll???? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2006, 16:57 |
|
||
|
Adodb.connection and multithreading
|
|||
|---|---|---|---|
|
#18+
Я просто любопытен... :) автор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" первая ссылка... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2006, 17:12 |
|
||
|
Adodb.connection and multithreading
|
|||
|---|---|---|---|
|
#18+
ок. Спасибо огромное всем, кто откликнулся на просьбу помощи. Отдельное спасибо buser ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2006, 17:16 |
|
||
|
Adodb.connection and multithreading
|
|||
|---|---|---|---|
|
#18+
buserВарианты 1. - не делать так... adAsyncExecute в основном потоке... 2. - в каждом новом потоке перед соз-м COM вызывать CoInitialize Какие преимущества многопоточности (CreateThread) перед асинхронным выполнением (adAsyncExecute) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2006, 11:34 |
|
||
|
Adodb.connection and multithreading
|
|||
|---|---|---|---|
|
#18+
buser, у меня еще такой вопрос, даже не вопрос а ситуция. все работает в открытом VB, а када я создаюexeшник, то при закпуске оного вылезает ошибка, которая требует перезапустить exeшник. Компилировал с P-code. и второй вопросик, что же такое adAsyncExecute? что эта команда делает? для чего она? желательно на какомнть понятном примере, а не так как в МСДН)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2006, 15:40 |
|
||
|
Adodb.connection and multithreading
|
|||
|---|---|---|---|
|
#18+
Вот что писал про adasyncexecute Processor Остальные вопросы к buser остаются... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2006, 16:06 |
|
||
|
Adodb.connection and multithreading
|
|||
|---|---|---|---|
|
#18+
marvanКакие преимущества многопоточности (CreateThread) перед асинхронным выполнением (adAsyncExecute) ?CreateThread это ты делаешь второй поток на клиенте. Главный поток продолжает заниматься отрисовкой картинок, получает события от клавиатуры-мышки. А второй поток запустил запрос в базу данных и ждет ответа от нее. Пока БД не ответит второй поток висит. А если делаешь в одном своем потоке RecordSet.open с флагом adAsyncExecute, то open вернется сразу же, не ожидая ответа от БД. После этого ты должен сам в главном потоке опрашивать свой recordset "закончил ли он работу". И при этом не забывать ожидать событий от мышки и рисовать картинки на экране. Фактически там все равно будет создан второй поток самим ADO, но он будет личным потоком драйвера ADO и ты до него доступа не имеешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2006, 18:51 |
|
||
|
Adodb.connection and multithreading
|
|||
|---|---|---|---|
|
#18+
White Owlесли делаешь в одном своем потоке RecordSet.open с флагом adAsyncExecute, то open вернется сразу же, не ожидая ответа от БД. Спорное утверждение. У меня событие ExecuteComplete происходит только после того, как процедура отработает. И ни кто не виснет и опрашивать ни кого не надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2006, 10:10 |
|
||
|
|

start [/forum/topic.php?all=1&fid=60&tid=2165553]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
169ms |
get topic data: |
5ms |
get forum data: |
1ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 235ms |
| total: | 472ms |

| 0 / 0 |
