< návrat zpět

MS Excel


Téma: VBA Jet.OLEDB.4.0 provider WinXP vs Win7 rss

Zaslal/a 29.8.2012 18:57

Jeza.mAhoj,
poradí mi někdo? :-)
Pod WinXP jsem vytvořil v excelu makro pro načítání dat z textového souboru, tak aby načetlo jen záznamy splňující jisté podmínky a jisté hodnoty mi nahradilo.
Pro toto načítání jsem použil Microsoft.Jet.OLEDB.4.0 providera a data načítám pomocí SQL příkazu "Select pole from soubor where ....".
Pod WinXP vše běží jak má, ale na počítači s Win7 to skočí do zdi. Při testu "Select * from soubor" to data načetlo (tzn. provider funguje), ale načetl všechna pole textového souboru odděleného středníkem jen jako jedno pole s obsahem "A;B;C;X..." místo aby načetl co středník to pole, takže s tím nelze pracovat.
Zkusil jsem si po předání připojovacího řetězce ho zpětně načíst a
u WinXP obsahoval klauzuli: Extended Properties="text;HDR=Yes;FMT=Delimited(;)
u Win7 tuto klauzili neobsahoval, přestože jsem mu ji předal.
Mimochodem u WinXP funguje i bez definice oddělovače.

Tak si říkám u Win7 není tato klauzule z nějakého důvodu převzata, ale netuším proč, když úplně to samé u WinXP funguje.
Pro jistotu jsem kontroloval i místní obecné nastavení WINDOWS a v obou případech mám nastaven oddělovač položek listu ; takže tím to nebude.

Nemá někdo nějaký tip kam se podívat, či jak upravit připojovací řetězec aby byla ve Win7 převzata klauzule ohledně rozšířených vlastností?

Připojovací řetězec strConn zadávám:
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ThisWorkbook.Path & "\VYSTUPY\;Extended Properties=""text;HDR=Yes;FMT=Delimited(;)"""

V příloze posílám vzorek.
Tlačítko GO spouští makro QueryTextFile

Vím že bych to mohl načítat jako prostý text řádek po řádku a ověřovat konkrétní pole, ale takhle mi to přišlo snažší, do doby než přišel Win7 :-/
Jen dodám, že oba pc obsahují Office 2003.
Díky
M@

Příloha: zip9357_tmp.zip (129kB, staženo 21x)
Zaslat odpověď >

#009359
avatar
Vyhledavač GOOGLU, je tam toho dost.
"win 7 microsoft.jet.oledb.4.0' provider"
Není instalovaný.citovat
#009360
Jeza.m
googlím půl dne :-)
Kdyby nebyl nainstalovaný, tak mi ho to nedovolí použít, ale ono mi ho to dovolí použít, dokonce se k souboru připojí, ale jednotlívé záznamy načte jako jedno pole místo několika polí dle oddělovače.
Mezi instalovanými providery oprvadu je - prověřeno viz. obrázek.

M@
Příloha: jpg9360_providers.jpg (129kB, staženo 22x)
9360_providers.jpg
citovat
#009361
avatar
Jak máš instal Win 32, nebo 64.
Providers máš 32 to může dělat problémy.
Z googlu:
ACE je novější verze přístup k soubory aplikace Access a Office 2010 je 64Bit ACE verze.
Já mám ještě 2003 32 bit tak víc neporadím.citovat
#009362
Jeza.m
office mám na všech 3 testovaných pc 2003.
první pc s WinXP funguje.
druhý pc s Win7 32bit nefunguje.
třetí pc s Win7 64bit nefunguje.
vzhledem k tomu že office 2003 je 32bit tak by v použitém provideru neměl být problém, ale je, z nějakého důvodu si pod Win7 nepřevezme z připojovacího řetězce Extended Properties.
M@citovat
#009363
avatar
No nevím, s tímhle tam mají problém všichni.
Musíte nainstalovat databázový engine pro Windows 7 od společnosti Microsoft webu
http://download.microsoft.com/download/2/4/3/24375141-E08D-4803-AB0E-10F2E3A07A
Nebo
http://translate.googleusercontent.com/translate_c?depth=1&hl=cs&prev=/search%3Fq%3Dwin%2B7%2Bmicrosoft.jet.oledb.4.0%2527%2Bprovider%2Bis%2Bnot%2Bregistered%26hl%3Dcs%26biw%3D1214%26bih%3D696%26prmd%3Dimvnsfd&rurl=translate.google.cz&sl=en&u=http://www.microsoft.com/en-us/download/details.aspx%3Fid%3D13255&usg=ALkJrhhTluA35vxFO8UpwTfhv73PwPQKVwcitovat
#009366
Jeza.m
staženo, nainstalováno a vyzkoušeno s providerem ACE pro win7 a chová se to úplně stejně jako JET - ignoruje extended properties - vše načte do jednoho pole.
strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.Path & "\VYSTUPY\;Extended Properties=""text;HDR=Yes;FMT=Delimited(;)"";"

Asi mi fakt nezbyde nic jiného než načítat to jako text do proměnné array řádek po řádku a vyhodnocovat si jeden po druhém :-/.
Ale i tak Ti děkuju za čas tomu věnovaný.
M@citovat
#009369
Jeza.m
Vypadá to, že ráno moudřejší večera a tak si odpovím sám (kdyby to někoho zajímalo) 1 .
Pod Win7 stačí jít do registru:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Text
a tam u hodnoty Format změnit data z
CSVDelimited
na
Delimited(;)
což je hodnota která je i u WinXP.

Poté byť stále pod Win7 nepřebírá extended properties (což stejně nechápu), tak díky výchozímu nastavení oddělovače v registru funguje.

M@citovat
#009391
avatar
Díval ses už na
Schema.ini File (Text File Driver)?citovat
#009392
Jeza.m
Nedíval :-), ale teď jsem to zkusil a funguje to, akorát je před každým použitím potřeba ten Schema.ini file makrem přepsat a dosadit jméno požadovaného txt souboru k načtení (první řádek), což ale nebude problém :-).

[20120720_KAMERA3.txt]
ColNameHeader=True
Format=Delimited(;)

Díky
M@citovat

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje