< návrat zpět

MS Excel


Téma: MS Query rss

Zaslal/a 16.2.2014 9:24

Zdravím všechny,
mám sice jednoduchý dotaz, ale jen doufám, že na něj existuje i jedoduchá odpověď. Stále hledám a pokud něco najdu, postnu to sem + přiložím i zjednodušený soubor, jako náhled o co mi asi jde.

Používám na vyhledávání MS Query databazy, funguje perfektně. Bohužel, jsem narazil na problém cesty k té samotné databazy. Potřeboval bych do nich dát proměnou, soubor používá více lidí a na více PC = každý ho bude mít jinou cestu k databazy.

Tak bych potřeboval, aby se pokaždý změnila cesta databaze.

Mám tam tyto parametry :
DSN=Excel Files;DBQ=D:\Aktualizace\Ukončené Akce.xlsm;DefaultDir=D:\Aktualizace;DriverId=1046;MaxBufferSize=2048;PageTimeout=5;

Předem moc děkuji.

Příloha: jpg17887_dbq.jpg (50kB, staženo 35x)
17887_dbq.jpg
stop Uzamčeno - nelze přidávat nové příspěvky.

#017888
avatar
Našel jsem na dvou třech místech toto :

Sub Auto_open()
'this is for pre Excel 2007
'I know you have Excel 2007, but I don't
'this might need to be different for 2007
Const strConn As String = "ODBC;DSN=Excel Files;DBQ=FULLNAME;DefaultDir=PATH\;DriverId=790;MaxBufferSize=2048;PageTimeout=5;"
Dim qt As QueryTable
Dim wks As Worksheet
With ActiveWorkbook
For Each wks In .Worksheets
'this needs to change for 2007
'wks.ListObject.QueryTables
For Each qt In wks.QueryTables
qt.Connection = Replace$(Replace$(strConn, "FULLNAME", .FullName), "PATH", .Path)
Next qt
Next wks
End With
Set qt = Nothing
Set wks = Nothing
End Sub

Vše proběhne jak má, ale cestu to nezmění, podle mě jsem něco ještě měl udělat, ale stále nemůžu přijít na to co :-(. Změnil jsme i parametr, který je nahoře na ten : ODBC;DSN=Excel Files;DBQ=FULLNAME;DefaultDir=PATH\;DriverId=790;MaxBufferSize=2048;PageTimeout=5; Jenže to nic neudělalo. Sice mi to píše oba údaje do cesty, ale já bych tam potřeboval dát tu proměnou.

Nejlepší pro mě by byla plocha uživatele. Teď je tam tato cesta : DSN=Excel Files;DBQ=D:\Users\kosinar\Desktop\akce.xlsm;DefaultDir=D:\Users\kosinar\Desktop;DriverId=1046;MaxBufferSize=2048;PageTimeout=5;citovat
#017889
avatar
Ten soubor...
Příloha: zip17889_akce.zip (23kB, staženo 34x)
citovat
#017890
avatar
MÁM TO A FUNGUJE NA 100 PROCENT :-).

Jinak pro ostatní, pokud by to někdy někdo potřeboval, tak nakonec to je takto:

Dim sPath As String, sDB As String
Dim ws As Worksheet, lo As ListObject
Dim sNewConn As String

sPath = ThisWorkbook.Path
sDB = ThisWorkbook.Name

sNewConn = "ODBC;DSN=Excel Files;"
sNewConn = sNewConn & "DBQ=" & sPath & "\" & sDB & ";"
sNewConn = sNewConn & "DefaultDir=" & sPath & ";"
sNewConn = sNewConn & "DriverId=1046;MaxBufferSize=2048;PageTimeout=5;"

For Each ws In ThisWorkbook.Worksheets
For Each lo In ws.ListObjects
lo.QueryTable.Connection = sNewConn
Next
Next


Mám to v Sub Auto_Open a díky tomu se mi to hned mění podle potřeby. Nakonec přidám jen pár dalších věcí, které při otevírání chci zadat.

Teda, ale že mi trvalo než jsem to našel.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