|
|
|
Загрузка в excel из vfoxpro
|
|||
|---|---|---|---|
|
#18+
У меня 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 ------------ Помогите, пожалуйста, каким-либо способом настроить загрузку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2011, 12:45 |
|
||
|
Загрузка в excel из vfoxpro
|
|||
|---|---|---|---|
|
#18+
Воспользуйтесь 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2011, 14:04 |
|
||
|
Загрузка в excel из vfoxpro
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответ, 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2011, 21:07 |
|
||
|
Загрузка в excel из vfoxpro
|
|||
|---|---|---|---|
|
#18+
spm11, у меня была такая же ошибка на другом АктивеХ Set MSComm1 = New MSComm 'стал получать ошибку ошибка 429 ACtiveX component can't решил: в ветке HKEY_CLASSES_ROOT\Licenses\4250E830-6AC2-11cf-8ADB-00AA00C00905 должно быть значение "kjljvjjjoquqmjjjvpqqkqmqykypoqjquoun" Магическая строка - "kjljvjjjoquqmjjjvpqqkqmqykypoqjquoun" Может из этой же оперы, лицензии надо глянуть?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2011, 05:34 |
|
||
|
Загрузка в excel из vfoxpro
|
|||
|---|---|---|---|
|
#18+
А ссылка на ADODB сделана? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2011, 11:17 |
|
||
|
Загрузка в excel из vfoxpro
|
|||
|---|---|---|---|
|
#18+
К тому же текст самого запроса вызывает подозрения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2011, 11:19 |
|
||
|
Загрузка в excel из vfoxpro
|
|||
|---|---|---|---|
|
#18+
А зачем вы испольуете именно VFPOLEDB ? Можно же Код: plaintext Код: plaintext http://connectionstrings.com/visual-foxpro ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2011, 13:29 |
|
||
|
Загрузка в excel из vfoxpro
|
|||
|---|---|---|---|
|
#18+
Ципихович Эндрю, Магическая строка не помогла. Жаль... 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2011, 12:05 |
|
||
|
Загрузка в excel из vfoxpro
|
|||
|---|---|---|---|
|
#18+
Купил новый ноутбук и office 2010 - на нем эта ошибка не появляется. Закачал с помощью Получение внешних данных-из мастера подключения данных. Я обычно конечно стараюсь другими методами исправлять ошибки, но так совпало. Всем отозвавшимся - большое спасибо за помощь! И еще есть вопрос, мне надо чтобы в (zfcac.enddate > Date(2011,01,01)) AND (zfcac.startdate<=Date(2011,09,30)) подставлялись даты из ячеек Excel. В Ms query можно использовать (zfcac.enddate >?), а здесь дает ошибку- Отсутствует значение для одного или нескольких требуемых параметров. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2011, 10:44 |
|
||
|
|

start [/forum/topic.php?fid=61&msg=37523512&tid=2176199]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
145ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 213ms |
| total: | 442ms |

| 0 / 0 |
