|
|
|
Сравнение таблиц из MySQL и Excel
|
|||
|---|---|---|---|
|
#18+
Всем привет. Прошу совета по следующей проблеме. Сразу предлагаю кусок кода: Dim mine As New ADODB.Connection Dim testmysql As New ADODB.Connection Dim rs As New ADODB.Recordset testmysql.ConnectionString = "Provider=MSDASQL.1;" & _ "Persist Security Info=False;Data Source=testmysql" mine.Open "Driver={MySQL ODBC 5.1 Driver};Server=localhost;DATABASE=mine;" & _ "User=root;Password=root;PORT=3306;OPTION=3;" testmysql.Open Set rs = New ADODB.Recordset rs.Open "select kod, f, i, o from zoom, tesmysql" & _ " where zoom.kod=testmysql.kod", mine Т.е у меня есть таблица testmysql в XL для простоты с одним полем kod и одним значением. И мне нужно вытянуть данные с MySQL таблицы zoom с таким кодом. Как это сделать в VBA пока не имею понятия. Т.е. как я вижу при открытии рекордсета можно ему задать только одно соединение, а таблицу testmysql, которая в XL-e VBA не видит (ругается VBA короче). Мож кто-нить подкинет идею или разъяснить как это толково сделать. Заранее спасибо за рекомендации ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2008, 19:59 |
|
||
|
Сравнение таблиц из MySQL и Excel
|
|||
|---|---|---|---|
|
#18+
> Автор: strike1 > Всем привет. Прошу совета по следующей проблеме. Сразу предлагаю кусок кода: > > rs.Open "select kod, f, i, o from zoom, tesmysql" & _ > " where zoom.kod=testmysql.kod", mine > > Т.е у меня есть таблица testmysql в XL для простоты с одним полем kod и одним > значением. И мне нужно вытянуть данные с MySQL таблицы zoom с таким кодом. Как это > сделать в VBA пока не имею понятия. Т.е. как я вижу при открытии рекордсета можно ему > задать только одно соединение, а таблицу testmysql, которая в XL-e VBA не видит > (ругается VBA короче). Мож кто-нить подкинет идею или разъяснить как это толково > сделать. > Заранее спасибо за рекомендации ! Например, пройтись по всем значениям столбца kod и составил бы такой запрос: select kod, f, i, o from zoom where zoom.kod in (1,2,3,6,9,66,234,122,56, ...,57), где цифры в скобках это значения из столбца kod. -- С уважением Горбонос Игорь Леонидович Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2008, 11:00 |
|
||
|
Сравнение таблиц из MySQL и Excel
|
|||
|---|---|---|---|
|
#18+
ОК. Пасиба уже разобрался. У меня вообще проблема была не с самим запросом, а с обращением к двум таблицам из разных баз данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2008, 18:22 |
|
||
|
Сравнение таблиц из MySQL и Excel
|
|||
|---|---|---|---|
|
#18+
> Автор: strike1 > ОК. Пасиба уже разобрался. У меня вообще проблема была не с самим запросом, а с > обращением к двум таблицам из разных баз данных. Это я понял :) Не знаю насчет MySql, есть ли там фишка как в акцессе Externel Table(по-моему) или Linked Server как в MSSQL, если есть, то можно попробовать задействовать её. Но это так, на будущее :) Удачи -- С уважением Горбонос Игорь Леонидович Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2008, 18:26 |
|
||
|
Сравнение таблиц из MySQL и Excel
|
|||
|---|---|---|---|
|
#18+
Спасибо за инфо ! Но я сделал иначе. Перед тем как сделать запрос к мускулу, в VBA выгружаю таблицу как csv тут же ее гружу в мускул (через командную строку) и даю запрос на сравнение таблиц из того же VBA :) Не знаю, короче несколько нестандартно наверно. Другого ничего в голову не пришло ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2008, 23:43 |
|
||
|
Сравнение таблиц из MySQL и Excel
|
|||
|---|---|---|---|
|
#18+
Теперь другая проблема. ДАнные по ходу не успевают выгрузится в рекордсет после запроса к мускулу. Пошагово делаю все нормально, а в реале не работает. Результаты запроса на лист XL не попадают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2008, 23:47 |
|
||
|
Сравнение таблиц из MySQL и Excel
|
|||
|---|---|---|---|
|
#18+
strike1Спасибо за инфо ! Но я сделал иначе. Перед тем как сделать запрос к мускулу, в VBA выгружаю таблицу как csv тут же ее гружу в мускул (через командную строку) и даю запрос на сравнение таблиц из того же VBA :) Не знаю, короче несколько нестандартно наверно. Другого ничего в голову не пришло ! или) Загружай XL таблицу в скуль средствами VBA, через Connection.Execute(), затем уже обратно получай выборку через тот же коннект. или) Загружай скулевскую таблицу в рекордсет (а потом и прямо на лист XL) и делай выборку уже через коннект к XL Разберись с кодом подключения на VBA, ибо раннее и позднее связывание для одного объекта в пределах процедуры - излишество. Для XL самое простое (и притормаживающее) решение по получению данных из разных источников - .Query, поскольку потом все данные находятся в одной книге, куда и строишь сложные запросы. Вообще, такие запросы надо делать (если Офисом) - из Акцесса, там можно одновременно подключить представления ко всем источникам - и вперед и с песнями... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2008, 08:36 |
|
||
|
Сравнение таблиц из MySQL и Excel
|
|||
|---|---|---|---|
|
#18+
> Автор: strike1 > Теперь другая проблема. ДАнные по ходу не успевают выгрузится в рекордсет после > запроса к мускулу. Пошагово делаю все нормально, а в реале не работает. Результаты > запроса на лист XL не попадают. Данные не могут не выгрузится в рекордсет. Пока запрос не выполнится, в программу не возвращается управление, разве что работаешь в асинхронном режиме, что вряд ли. Может проблема с драйвером, и стоит его обновить? Попробуй показать теперешний вариант кода, потому что у меня запросы из екселя что в MSSQL, что в Yaffil выполняются нормально, и данные я получаю -- С уважением Горбонос Игорь Леонидович Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2008, 10:56 |
|
||
|
Сравнение таблиц из MySQL и Excel
|
|||
|---|---|---|---|
|
#18+
автор или) Загружай XL таблицу в скуль средствами VBA, через Connection.Execute(), затем уже обратно получай выборку через тот же коннект. Попробую возразить. С тем чтобы мне загрузить таблицу в MysQL, надо использовать load data. Коннектор ругается , мол пишет, что не поддерживается такая команда (когда из ВБА пробую). Попробовал создать в мускуле такую процедуру и потом поднять ее из ВБА и опять подстава. Нельзя в мускуле ее сохранять (т.е. load data в процедуре). Пришлось использовать командную строку и mysqlimport опять же из ВБА. Я хотел бы спросить следующее. Ситуация такая, пример кода: .... rs.open " некий скул запрос ", connect_to_mysql ... range("A1"").copyfromrecordset rs .... Если ставлю в отладчике точку останова на 1-ой строчке, и потом пошагово все работает. На 2-ой не работает, с рекордсета ничего не копится. Мож у него свойство есть какое, чтоб его проверить и потом давать запрос к mysql ? ? ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2008, 13:11 |
|
||
|
Сравнение таблиц из MySQL и Excel
|
|||
|---|---|---|---|
|
#18+
Игорь Горбонос > Автор: strike1 > Теперь другая проблема. ДАнные по ходу не успевают выгрузится в рекордсет после > запроса к мускулу. Пошагово делаю все нормально, а в реале не работает. Результаты > запроса на лист XL не попадают. Данные не могут не выгрузится в рекордсет. Пока запрос не выполнится, в программу не возвращается управление, разве что работаешь в асинхронном режиме, что вряд ли. Может проблема с драйвером, и стоит его обновить? Попробуй показать теперешний вариант кода, потому что у меня запросы из екселя что в MSSQL, что в Yaffil выполняются нормально, и данные я получаю -- С уважением Горбонос Игорь Леонидович Posted via ActualForum NNTP Server 1.4 Код: 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. 68. 69. 70. 71. Но прежде чем запустить процедуру mysql_query. Есть такой код: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2008, 20:40 |
|
||
|
Сравнение таблиц из MySQL и Excel
|
|||
|---|---|---|---|
|
#18+
Вот выложил кусочек прожки. Готов выслушать любую критику и полезные рекомендации тож ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2008, 20:45 |
|
||
|
Сравнение таблиц из MySQL и Excel
|
|||
|---|---|---|---|
|
#18+
strike1range("A1"").copyfromrecordset rs А если выгрузить через массив? Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2008, 08:38 |
|
||
|
Сравнение таблиц из MySQL и Excel
|
|||
|---|---|---|---|
|
#18+
Кстати, тестовик такой, что прямо через край... Начнем сначала. Выложи файлом: пример листа XL с данными (с именами полей) + пример таблицы MySQL с данными (можно тоже в виде листа XL) + пример нужного тебе SQL-запроса (алиасы не забудь указать у полей!) После этого получишь процедуру, которую будешь тестить из отдельного чистого XL файла ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2008, 08:55 |
|
||
|
Сравнение таблиц из MySQL и Excel
|
|||
|---|---|---|---|
|
#18+
AndreTM А если выгрузить через массив? Толку выгружать, если: rs.recordcount = 0 Пасиба за советы, но вот добавил пару строк и все работает, что называется, в реале: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. AndreTMКстати, тестовик такой, что прямо через край... В смысле тестовик ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2008, 20:04 |
|
||
|
|

start [/forum/topic.php?fid=60&msg=35579426&tid=2161770]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
166ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
70ms |
get tp. blocked users: |
2ms |
| others: | 213ms |
| total: | 502ms |

| 0 / 0 |
