26. juni 2004 - 17:29Der er
12 kommentarer og 1 løsning
MSQuery - forespørgelser mod anden server - hvor rettes det?
Hej Alle i kloge mennesker..
Jeg her en meget spøjs ting. Vi har en del excelark der via en ODBC forbindelse henter nogle data på en as400 - så langt så godt. Men nu har skiftet as400, og jeg skal have arkene til at hente data på den nye.
I første omgang troede jeg bare at jeg skulle ændre servernavnet inden i ODBC kilden så ville alt være godt - men nej :-( Selv efter at have slettet den gamle odbc kilde og oprettet en ny mod den nye server (med samme odbc datakilde navn) søgte mine excelark den gamle server.... Excel må altså gemme dns navn og det hele - og ikke kun odbc-datakilde navn som jeg troede. Og her var problemet at eftersom jeg ikke kunne logge ind på den gamle server kunne jeg slet ikke få log til at redigerer forespørgelsen i MS query - Uden login endte jeg tilbage i arket.
Så fik jeg et tip om at snyde så mit gamle dnsnavn resolvede til den nye server. Nu skriver den stadig at den logger ind på den gamle server, men rammer fint den nye. Men det løste ikke problemet, for serverens navn er stadig forskellig, så jeg får en fejl "SQL0114 Relationel Database LINTAS is not the same as the current server REKLAME". Jeg har været igennem hele msquery programmet, men kan ikke nogle steder se hvor den har gemt dette navn "lintas".
Er der nogle der kan hjælpe mig videre?? Det er RIGTIG mange excelark der skal laves forfra hvis jeg ikke får ændret dette, så alt hjælpe / hint er ønskede...
Det er altså en client access (ibm) ODBC datakilde mod en as400 jeg kæmper med, men problemet er altså at Excel et eller andet sted gemme dns navn og servernavn for serveren og ikke vil have svar fra andre end den....
I selve query-definitionsfilen er der også angivet en sti til databasen. Det kan være den der driller. Lav en søgning på *.dqy filer. Åbn dem med notepad Rediger stien i dqy filen (både DBQ og DefaultDir)
Nu sidder jeg ikke lige ved pc'en, men kommer der en qdy fil når man laver forespørgelsen indefra Excel? Jeg ledte lidt efter den, den anden dag, og har en grim ide om at den ligger embeddet i arket....
Der kommer en fil med efternavnet dqy. Jeg mener ikke at excel "embedder" noget her. dqy filen er stedet, hvor MSQUERY gemmer selve query'en, incl sti og filnavn.
Kom endelig med dit forslag, for jeg har ikke kunnet finde nogle .qry filer... Og hvis jeg prøver at gemme forespørgelsen (den havde jeg nemlig også gættet på) så får jeg samme fejl fra "smarte" MS QUERY, i og med at den ikke kan finde den rette server til at lave forespøgelsen op imod - så kan jeg heller ikke få lov til at gemme den... :-(
Her er den. Test den og vend tilbage. Den opdaterer alle queries i projektmappen. Rediger selv linien stNewPath = "\\SERVER1\DATA"
Sub ChangePath() Dim stDBase As String Dim vaTemp Dim stNewPath As String Dim vaConn As Variant Dim ws As Worksheet Dim qt As QueryTable stNewPath = "\\SERVER1\DATA" For Each ws In ActiveWorkbook.Worksheets On Error Resume Next For Each qt In ws.QueryTables vaConn = Split(qt.Connection, ";") vaTemp = Split(vaConn(2), "\") stDBase = vaTemp(UBound(vaTemp)) vaConn(2) = "DBQ=" & stNewPath & "\" & stDBase vaConn(3) = "DefaultDir=" & stNewPath vaConn = Join(vaConn, ";") qt.Connection = vaConn Next On Error GoTo 0 Next End Sub
Ohhh, Cool - den tanke have slet ikke slået mig. Selvfølgelig ligger de som objekter man kan ramme med en makro!
Jeg er på ferie pt, og er ikke sikker på at jeg bare lige kan maile denne til en bruger til test - så det kommer lige til at gå et par uger inden jeg kan teste. (Med mindre jeg bliver så nysgerrig at jeg logger ind og tester... ;-))
Men jeg skal nok give info så snart jeg får testet...! Tak indtil videre...
Jeg havde lige skret en kommentar som så forsvandt (????) Nå men bedre send end aldrig.. Ved at ændre SYSTEM fremfor DBQ i ovennnævnte fik jeg rettet det rigtige, og kunne nu redigere selve SQL'en via MS Query. Desværre står det gamle navn også i SQL'en - men den kan rettes manuelt nu - før kunne jeg slet ikke få den vist...
Så problemet er løst, men hvis man kan rette sql'en også via makroen ville det være perfekt... - prøvede med qt.sql...
Tak for hjælpen anyway, smid et svar så får du nogle points...
I know, men tak for kampen! Jeg havde ikke selv fået ideen med at skifte det via makro...
Som sagt er status nu at vi først kører makroen der retter "system" i qt'erne, og derefter kan vi manuelt ændre navnet de steder det står i selve sql'en. Ved du om man kan rette den SQL via en makro?
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.