Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> FoxPro(Ado) + VB = problem 
:(
    Опции темы
ufo
Дата 10.12.2004, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 4.11.2004

Репутация: нет
Всего: нет



Есть проблема при работе с FoxPro через ADO.
Хочу выполнить запрос такого вида:
Код
select table1.*, table2.A, table2.B from table1, table2 where table1.id = table2.id into table "D:\Develop\Visual Basic\database\table3.dbf"

Если делаю это в самом FoxPro, то все ок. А вот если этот же запрос через Бейсик то не пашет :'(

вот код на VB:
Код
Private Sub Command1_Click()
' tbMany, tbName1, tbName2 - это обычные edit'ы
' frmMain.path содержит путь до директории с таблицами Foxpro
' Если пытаться вывести результат запроса, в edit например, то все ок.
Dim i As Integer
Dim col As Integer
Dim strs As String
Dim sql As String
Dim strs1 As String
Dim cmd As String
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset

col = Int(Val(tbMany))
If col = 0 Then
   tmp = MsgBox("Неверное количество столбцов", vbCritical + vbOKOnly)
   Exit Sub
End If
strs1 = InputBox("Введите имя столбца из первой таблицы для связи со второй", "Выбор столбца для связи")
' Начинаем строить строку sql запроса
sql = "select " + tbName1 + ".*"
For i = 1 To col
   strs = InputBox("Введите " + str(i) + " имя столбца:", "Выбор колонок во второй таблице")
   sql = sql + ", " + tbName2 + "." + strs
Next
sql = sql + " from " + tbName1 + ", " + tbName2 + " where " + tbName1 + "." + strs1 + " = " + tbName2 + "." + strs1 + " into table " + Chr(34) + frmMain.path + "\table3.dbf" + Chr(34)

' Начинаем подключение к таблицам БД
cmd = "Provider=MSDASQL.1;Persist Security Info=False;Extended Properties=Driver={Microsoft FoxPro VFP Driver (*.dbf)};UID=;SourceDB=" + frmMain.path + ";SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;Null=Yes;Deleted=Yes;"
Set cn = New ADODB.Connection
With cn
   .ConnectionString = cmd
   .Open
End With
Set rs = New ADODB.Recordset
With rs
   .Open sql, cn, adOpenDynamic, adLockBatchOptimistic
'MsgBox(rs("id")) ' Так работает, то есть подключение к таблице есть
rs.MoveNext ' Это вообще надо? если весь запрос должен помещаться в другую таблицу?
       
   .Close
End With
Set rs = Nothing
cn.Close
Set cn = Nothing

End Sub

Прога вроде как выполняет запрос, то есть ждет некоторое время, но новой таблицы не появляется :'(
В чем глюк? И как лечить?
PM MAIL   Вверх
Akina
Дата 10.12.2004, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Не выйдет. Смотри - тип БД таблиц 1 и 2 известен - какой там драйвер и протчая... а вот для результирующей таблицы такого нету. То есть данные отбираются, но куда их пихать - Барсик просто не знает. Фоксу проще - он свое гнет, остальное ему до фени...

Имхо сперва создай такую таблицу (табледефы там), а потом открой на нее коннет и insert into ... select ...
Добавлено @ 16:02
Цитата(ufo @ 10.12.2004, 16:48)
'MsgBox(rs("id")) ' Так работает, то есть подключение к таблице есть

Это подключение к рекордсету, а не к таблице.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
ufo
Дата 10.12.2004, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 4.11.2004

Репутация: нет
Всего: нет



smile

PM MAIL   Вверх
Naghual
Дата 10.12.2004, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



Формат записи нужно исправить на следующий:
Код
sql = sql + " from " + tbName1 + ", " + tbName2 + " where " + tbName1 + "." + strs1 + " = " + tbName2 + "." + strs1 + " into table " + "'table3'"

И, как мне кажется на вскидку, нужно доработать строку подключения.
У меня сейчас нет возможности все это проверить, за что и извеняюсь.


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
ufo
Дата 13.12.2004, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 4.11.2004

Репутация: нет
Всего: нет



Naghual а смысл? оно так не жеает работать.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0596 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.