powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Загрузка в excel из vfoxpro
9 сообщений из 9, страница 1 из 1
Загрузка в excel из vfoxpro
    #37523466
spm11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня WinXP, Ofice2003, 2007.
Мне надо в Excel загрузить из Visuas FoxPro данные по следующему запросу. Раньше я использовал MS Query, но в этом случае при добавлении текста запроса в MS Query выходит ошибка - SQL.Too many subqueries.


----------
SELECT distinct person.sex, zank.ank_rn, zkatper.code, zvidisp.code, ztipdol.code, zfcacch.stqnt, zfcac.startdate, zfcac.enddate, comdicbs6.name, comdicbs7.name,
comdicbs1.name, comdicbs4.name, comdicbs5.name
FROM person person
Left Join orgbase orgbase on person.orbase_rn = orgbase.rn
Left Join zank zank on zank.orgbase_rn = orgbase.rn
Left Join zfcac zfcac on zank.ank_rn = zfcac.ank_rn
Left Join zfcacch zfcacch on zfcacch.fcacbs_rn = zfcac.fcac_rn
Left Join zvidisp zvidisp on zvidisp.vidisp_rn = zfcac.vidisp_rn
Left Join ztipdol ztipdol on ztipdol.tipdol_rn = zfcac.tipdol_rn
Left Join zkatper zkatper on zkatper.katper_rn = zfcac.katper_rn
Left Join zempeduc zempeduc1 on zempeduc1.orgbase_rn = orgbase.rn and zempeduc1.edutype='7'
Left Join zempeduc zempeduc2 on zempeduc2.orgbase_rn = orgbase.rn and zempeduc2.edutype='1'
Left Join zempeduc zempeduc3 on zempeduc3.orgbase_rn = orgbase.rn and zempeduc3.edutype='4'
Left Join zempeduc zempeduc4 on zempeduc4.orgbase_rn = orgbase.rn and zempeduc4.edutype='5'
Left Join zempeduc zempeduc5 on zempeduc5.orgbase_rn = orgbase.rn and zempeduc5.edutype='6'
Left Join comdicbs comdicbs6 on zempeduc5.edudegree_rn = comdicbs6.comdicbs_rn
Left Join comdicbs comdicbs7 on zempeduc1.edurank_rn = comdicbs7.comdicbs_rn
Left Join comdicbs comdicbs1 on zempeduc2.edukind_rn = comdicbs1.comdicbs_rn
Left Join comdicbs comdicbs4 on zempeduc3.edukind_rn = comdicbs4.comdicbs_rn
Left Join comdicbs comdicbs5 on zempeduc4.edukind_rn = comdicbs5.comdicbs_rn
Where ((zvidisp.code In ('Временный','вне','замещение','осн')) AND
(ztipdol.code Not In ('Аспирант','Аспиранты','студент','студент сирота')) AND (zkatper.code Not In ('Неспис.состав','сту')) AND
(zfcac.enddate > Date(2011,01,01)) AND (zfcac.startdate<=Date(2011,09,30)))
------------


Я попробовал загрузить программно. На строке .Refresh BackgroundQuery:=False выходит ошибка Run-time error 1004:Application-defined or object-defined error.

------------
With ActiveSheet.QueryTables.Add(Connection:=Array( _
"OLEDB;Provider=VFPOLEDB;Data Source=D:\BASE\PARUS.DBC;Mode=ReadWrite;Extended Properties="""";User" _
, _
" ID="""";Mask Password=False;Cache Authentication=False;Encrypt Password=False;Collating Sequence=MACHINE;DSN="""";DELETED=True;CODE" _
, _
"PAGE=1251;MVCOUNT=16384;ENGINEBEHAVIOR=90;TABLEVA LIDATE=3;REFRESH=5;VARCHARMAPPING=False;ANSI=True; REPROCESS=5" _
), Destination:=Range("A1"))
.CommandType = xlCmdSql
.CommandText = Array( _
"SELECT distinct person.sex, zank.ank_rn, zkatper.code, zvidisp.code, ztipdol.code,zfcacch.stqnt, zfcac.startdate, zfcac.enddat" _
, "e, comdicbs6.name, comdicbs7.name, comdicbs1.name, comdicbs4.name, comdicbs5.name FROM person person Left Join orgbase orgbase on person.orbase_rn = orgbase.r" _
, "n Left Join zank zank on zank.orgbase_rn = orgbase.rn Left Join zfcac zfcac on zank.ank_rn = zfcac.ank_r" _
, "n Left Join zfcacch zfcacch on zfcacch.fcacbs_rn = zfcac.fcac_rn Left Join zvidisp zvidisp on zvidisp.vidisp_rn = zfcac.vidisp_r" _
, "n Left Join ztipdol ztipdol on ztipdol.tipdol_rn = zfcac.tipdol_rn Left Join zkatper zkatper on zkatper.katper_rn = zfcac.katper_r" _
, "n Left Join zempeduc zempeduc1 on zempeduc1.orgbase_rn = orgbase.rn and _ zempeduc1.edutype='7' Left Join zempeduc zempeduc2 on zempeduc2.orgbase_rn = orgbase.rn and _ zempeduc2.edutype" _
, "='1' Left Join zempeduc zempeduc3 on zempeduc3.orgbase_rn = orgbase.rn and _ zempeduc3.edutype='4' Left Join zempeduc zempeduc4 on zempeduc4.orgbase_rn = orgbase.rn and _ zempeduc4.edutype" _
, "='5' Left Join zempeduc zempeduc5 on zempeduc5.orgbase_rn = orgbase.rn and _ zempeduc5.edutype='6' Left Join comdicbs comdicbs6 on zempeduc5.edudegree_rn = comdicbs6.comdicbs_r" _
, "n Left Join comdicbs comdicbs7 on zempeduc1.edurank_rn = comdicbs7.comdicbs_rn Left Join comdicbs comdicbs1 on zempeduc2.edukind_rn = comdicbs1.comdicbs_r" _
, "n Left Join comdicbs comdicbs4 on zempeduc3.edukind_rn = comdicbs4.comdicbs_rn Left Join comdicbs comdicbs5 on zempeduc4.edukind_rn = comdicbs5.comdicbs_r" _
, "n Where ((zvidisp.code In ('Временный','вне','замещение','осн')) AND (ztipdol.code Not In ('Асп','сту')) AN" _
, "D (zkatper.code Not In ('Неспис.состав','сту')) AND (zfcac.enddate > Date(2011,09,30)) AND (zfcac.startdate<=Date(2011,01,01)))")
.Name = "3"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.SourceConnectionFile = "D:\ist\3.odc"
.Refresh BackgroundQuery:=False
End With
------------
Помогите, пожалуйста, каким-либо способом настроить загрузку.
...
Рейтинг: 0 / 0
Загрузка в excel из vfoxpro
    #37523512
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Воспользуйтесь ADODB.connection/recordset.
Код: 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.
Sub ODBCGetData(ByVal cnnOpen As String, ByVal rstOpen As String, ByRef oDestRange As Object)
' cnnOpen - строка подключения к провайдеру (Connection в Query)
' rstOpen - строка с командой-запросом (CommandText в Query) 
' oDestRange - объект-получатель

    Set cnn = CreateObject("adodb.connection")
    cnn.Open cnnOpen
    
    Set rst = CreateObject("adodb.recordset")
    rst.Open rstOpen, cnn
    
    'Вывод наименований полей результата
    'For i = 0 To rst.Fields.Count - 1
    '    oDestRange.Offset(0, i) = rst.Fields(i).Name _
    '    & " ( " & rst.Fields(i).Type _
    '    & " (" & rst.Fields(i).Precision _
    '    & "," & rst.Fields(i).NumericScale _
    '    & ") " & rst.Fields(i).DefinedSize _
    '    & "," & rst.Fields(i).ActualSize _
    '    & ")"
    'Next
    'Set oDestRange = oDestRange.Offset(1, 0)

    oDestRange.CopyFromRecordset rst
    
    rst.Close
    cnn.Close
    
    Set rst = Nothing
    Set cnn = Nothing

End Sub

' Пример использования (для выборки из Excel)
ODBCGetData _
    "Driver={Microsoft Excel Driver (*.xls)};DBQ=c:\test.xls;", _
    "SELECT * FROM [Лист1$]", _
    ActiveSheet.Cells( 2 ,  2 )
...
Рейтинг: 0 / 0
Загрузка в excel из vfoxpro
    #37524536
spm11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за ответ, AndreTM!
Я уже пробовал connection/recordset, но выходит ошибка “Run-time error 429: ActiveX component can’t create object.” на строке
Set cnn = CreateObject("ADODB.Connection") '1-й вариант
Set cnn As New ADODB.Connection '2-й вариант

Я просмотрел форумы по этой ошибке. Пробовал следующее:
regsvr32 /s MSMAPI32.OCX
regsvr32 C:\progra~1\common~1\micros~1\dao\dao350.dll
regsvr32 C:\progra~1\common~1\micros~1\dao\dao360.dll
regsvr32 scrrun.dll

vbrun60sp6.exe
MicrosoftFixit50181.msi
Установил Офис-2010 – в нем та же ошибка.
Но это все не помогло.

Вот код по примеру AndreTM:

Public Function obraz()
Dim Err As ADODB.Error
Dim strErr As String
Dim cnn As Object
Dim rst As Object 'ADODB.Recordset
Dim cnnOpen As String
Dim rstOpen As String
Dim oDestRange As Object
Dim i As Integer

cnnOpen = "OLEDB;Provider=VFPOLEDB...»
rstOpen = "SELECT ...»
Set oDestRange = ThisWorkbook.Worksheets("Лист1").Range("A1")

Set cnn = CreateObject("ADODB.Connection") '1-й вариант
Set cnn As New ADODB.Connection '2-й вариант

cnn.Open (cnnOpen)
Set rst = CreateObject("adodb.recordset")
rst.Open rstOpen, cnn

Вот снимок из программы process monitor, может кто-нибудь найдет как исправить эту ошибку: http://depositfiles.com/files/l6tmhtvz3
...
Рейтинг: 0 / 0
Загрузка в excel из vfoxpro
    #37524818
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spm11,
у меня была такая же ошибка на другом АктивеХ
Set MSComm1 = New MSComm 'стал получать ошибку ошибка 429 ACtiveX component can't
решил:
в ветке
HKEY_CLASSES_ROOT\Licenses\4250E830-6AC2-11cf-8ADB-00AA00C00905
должно быть значение "kjljvjjjoquqmjjjvpqqkqmqykypoqjquoun"
Магическая строка - "kjljvjjjoquqmjjjvpqqkqmqykypoqjquoun"
Может из этой же оперы, лицензии надо глянуть??
...
Рейтинг: 0 / 0
Загрузка в excel из vfoxpro
    #37525047
f
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ссылка на ADODB сделана?
...
Рейтинг: 0 / 0
Загрузка в excel из vfoxpro
    #37525052
f
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К тому же текст самого запроса вызывает подозрения.
...
Рейтинг: 0 / 0
Загрузка в excel из vfoxpro
    #37525381
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем вы испольуете именно VFPOLEDB ?

Можно же
Код: plaintext
Driver={Microsoft Visual FoxPro Driver};...
или
Код: plaintext
Driver={Microsoft FoxPro VFP Driver (*.dbf)};...

http://connectionstrings.com/visual-foxpro
...
Рейтинг: 0 / 0
Загрузка в excel из vfoxpro
    #37528856
spm11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ципихович Эндрю,
Магическая строка не помогла. Жаль...
F,
Запрос работает-проверял.
AndreTM,
Вид соединения может быть разный и по-моему все они должны работать и VFP OLE DB Provider и Microsoft Visual FoxPro ODBC Driver. Как раз на http://connectionstrings.com/visual-foxpro это описано, спасибо за эту ссылку - видимо буду пробовать! . Я попробовал поставить пустые кавычки cnnOpen ="" и все равно выходит та же ошибка-я так понял, ошибка не связана с соединением.

Может быть у меня не все отмечено в Tools-References? Либо не хватает каких-нибудь dll-ок? Или какие-то другие настройке в windows и office? Что можно проверить?

Вот что отмечено в Tools-References:
1Visual baisic for applications
2MS Excel 11.0 object library (в ms office2010 - 14.0)
3OLE Automation
4MS Office 11.0 object library (в ms office2010 - 14.0)
5MS ActiveX data objects 2.7 library (в ms office2010 - пробовал отметить 2.8)
6MS forms 2.0 object library
...
Рейтинг: 0 / 0
Загрузка в excel из vfoxpro
    #37569515
spm11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Купил новый ноутбук и office 2010 - на нем эта ошибка не появляется. Закачал с помощью Получение внешних данных-из мастера подключения данных. Я обычно конечно стараюсь другими методами исправлять ошибки, но так совпало.
Всем отозвавшимся - большое спасибо за помощь!

И еще есть вопрос, мне надо чтобы в (zfcac.enddate > Date(2011,01,01)) AND (zfcac.startdate<=Date(2011,09,30))
подставлялись даты из ячеек Excel. В Ms query можно использовать (zfcac.enddate >?), а здесь дает ошибку- Отсутствует значение для одного или нескольких требуемых параметров.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Загрузка в excel из vfoxpro
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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