Avatar billede micaud Mester
14. marts 2016 - 10:44 Der er 10 kommentarer og
1 løsning

ODBC link navn i forespørgsel

Hej.

Jeg bruger 4 forskellige ODBC forbindelser til at hente data fra 4 forskellige Navision regnskaber (en pr. land).

Jeg har en makro der kan skifte mellem ODBC forbindelserne, men jeg skal fortsat lave 4 forskellige Querys for at kunne tilføje "Regnskabsland", så jeg ved, hvilket regnskab data kommer fra.

Min Pass-Through ser således ud:

SELECT  *
FROM Finanspost
where løbenr_ > 6300000

Hvordan får jeg tilføjet en kolonne med ODBC-navnet, eller en hvis-sætning der siger, at den skal returnere "Sverige" ved denne ODBC-streng:

"ODBC;DSN=DynamicsSverige;DBQ=\\SBS\RedirectedFolders\MIVE\My Documents;CODEPAGE=1252;"

og "Danmark" ved denne ODBC-streng:

"ODBC;DSN=DynamicGroup88;DBQ=\\SBS\RedirectedFolders\MIVE\My Documents;CODEPAGE=1252;"

Det vil gøre hele mit arbejde langt nemmere, hvis jeg kun skulle have en SELECT Query for alle lande.

Sidst men ikke mindst:

Hvordan laver jeg min Query dynamisk, så jeg ikke skal ændre WHERE statement hele tiden:

SELECT  *
FROM Finanspost
where løbenr_ > 6300000

Den skal kun hente sidste rekords ind fra serveren til min lokale database

Jeg har forsøgt SELECT TOP 10 * FROM FINANSPOST uden held, og LIMIT 10, men det virker heller ikke.
Avatar billede terry Ekspert
14. marts 2016 - 12:15 #1
I dont know how you choose which "Regnskabsland" you intend using, but lets say you have a radio button group, here you would get a specific value from whatever you select. Then you can use this value in a select case

http://www.techonthenet.com/access/functions/advanced/case.php

Then in each case you can change the connection string and also the SQL (where ...) depending on the selected "Regnskabsland"
Avatar billede terry Ekspert
14. marts 2016 - 12:18 #2
Not sure I understand what you want to do here.

"Hvordan laver jeg min Query dynamisk, så jeg ikke skal ændre WHERE statement hele tiden:

SELECT  *
FROM Finanspost
where løbenr_ > 6300000

Den skal kun hente sidste rekords ind fra serveren til min lokale database

Jeg har forsøgt SELECT TOP 10 * FROM FINANSPOST uden held, og LIMIT 10, men det virker heller ikke. "


Hvordan laver jeg min Query dynamisk, så jeg ikke skal ændre WHERE statement hele tiden:

SELECT  *
FROM Finanspost
where løbenr_ > 6300000

Den skal kun hente sidste rekords ind fra serveren til min lokale database


"Jeg har forsøgt SELECT TOP 10 * FROM FINANSPOST uden held, og LIMIT 10, men det virker heller ikke. "


this is only going to give you the first 10 or so records entered into the dB, it doesn't have any where criteria sorted in any way.
Avatar billede micaud Mester
14. marts 2016 - 13:34 #3
I run this code:

Dim qdf As QueryDef

For Each qdf In CurrentDb.QueryDefs
    If qdf.Type = dbQSQLPassThrough Then
        qdf.Connect = "ODBC;DSN=DynamicGroup88;DBQ=\\SBS\RedirectedFolders\MIVE\My Documents;CODEPAGE=1252;"
    End If
Next

Now I am using the "Denmark" ODBC connection.

Then I run this pass-through Query by SQL:

SELECT Løbenr_ as Løbenr_, (Finanskontonr_) AS Kt_Nr_, (Finanskontonavn) AS Navn_, (Bogføringsdato) AS Dato_, Bilagsnr_, (Beskrivelse) AS Beskrivelse_, ("Global dimension 1-kode") AS Afd_, Beløb AS Beløb_, Momsbeløb AS Moms_, ("Bruger-id") AS ID_, kildespor AS Kilde_, 'Grp88_DK' AS Company_
FROM Finanspost
where Løbenr_ > 6300000

The output is perfect as you see I have typed 'Grp88_DK' AS Company_ and I would like the Query to find out which country from the ODBC string.

Otherwise I need 4 different pass-through queries where I only change the Company name manually - I like the SQL to find out which ODBC I use and return that in a column.
Avatar billede micaud Mester
14. marts 2016 - 13:51 #4
My Query using the pass-through Query is much quicker if I put in the Where statment in the pass-through query

My Navision has 6,5 mio. records and I only need to add new records since last run of the Query.

I would like the pass-through Query to find the last top 10000 looking at the "Løbenr_" column every time --> this will be dynamic as the last top 10000 will change when new records are interen in my ERP system.
Avatar billede terry Ekspert
14. marts 2016 - 14:12 #5
Lets take a step backwards.

How do you decide that you intend running the code for "Denmark"?

Do you have a piece of code for each country?
Avatar billede terry Ekspert
14. marts 2016 - 14:15 #6
In your previous question I gave an example as to how you can change the SQL of the query using code. Here you can include the WHERE ....

Assuming the "Løbenr_" column increases for newer records.

SELECT TOP 10000 * FROM FINANSPOST ORDER BY Løbenr DESC
Avatar billede micaud Mester
14. marts 2016 - 15:27 #7
This dos not Work:

SELECT TOP 10000 * FROM FINANSPOST ORDER BY Løbenr DESC

I get an error <<?>> between "10000" and "*"

SELECT TOP 10000 <<?>> * FROM FINANSPOST ORDER BY Løbenr DESC
Avatar billede terry Ekspert
14. marts 2016 - 16:17 #8
Not sure I can help, the syntax looks correct so it should work.

Is the name of field Løbenr correct? I see that you use Løbenr_


Is this a passthrough query? If so you need to find correct syntax for NAV using TOP.
Avatar billede terry Ekspert
03. april 2016 - 18:39 #9
?
Avatar billede micaud Mester
24. september 2017 - 12:43 #10
Sorry for the hugh delay - you actual helped me a lot :-)
Avatar billede terry Ekspert
24. september 2017 - 13:38 #11
Well great to hear it was useful
and thanks too
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



IT-JOB

NOVAX A/S

Sales Director

Danske Commodities A/S

IT systems developer

AURA A/S

Test Manager

Cognizant Technology Solutions Denmark ApS

Graduate - Software Automation Program