Avatar billede puppetmaster Nybegynder
18. juni 2004 - 10:38 Der er 26 kommentarer og
1 løsning

Egenskaben Destinationsdatabase for en forespørgsel

Er der en eller anden måde hvorpå man vha. VBA kan ændre egenskaben Destinationsdatabase for en given forespørgsel?
Det er ikke fordi jeg synes det er for lang tid at skulle ændre feltet for 7 forespørgsler (under 5 min.), men fordi jeg skal gøre det HVER GANG jeg checker min developer version ud fra VSS og lægger den i produktionsmappen, hvilket er ca. 8-10 gange hver dag! Nå, ja, også fordi det er spildtid ad Helveg til! :(
Avatar billede puppetmaster Nybegynder
18. juni 2004 - 10:40 #1
Jeg skal også sætte Destinationstabel. :(
18. juni 2004 - 10:42 #2
Disse 2 egenskaber er blot en del af forespørgslens SQL.
Denne kan du ændre således:

Dim db as Database
Dim qdef as Querydef
Set db = Currentdb
Set qdef = db.Querydefs("Din forespørgsel")
qdef.SQL = "INSERT INTO [ny tabel] IN 'C:\Dokumenter\Dindb.mdb' SELECT FROM [Din tabel];"
18. juni 2004 - 10:43 #3
Den kortere:
currentdb.querydefs("Din forespørgsel").SQL = "INSERT INTO [ny tabel] IN 'C:\Dokumenter\Dindb.mdb' SELECT FROM [Din tabel];"
18. juni 2004 - 10:43 #4
Begge kræver en reference til Microsoft DAO
Avatar billede puppetmaster Nybegynder
18. juni 2004 - 10:57 #5
Den var godt nok kryptisk! (men det er jo også fredag!) :)
Ser om jeg kan hitte ud af hvad du mener...
Avatar billede puppetmaster Nybegynder
18. juni 2004 - 10:58 #6
Hvad med et eksempel? ;)
Lad os sige at jeg vil ændre destinationsdatabasen for forespørgslen qryMyQuery til databasen C:\MyDatabase
18. juni 2004 - 11:01 #7
Det kræver stadig 2 parametre mere: tabellen, som der hentes fra og tabellen i C:\MyDatabase.mdb

currentdb.querydefs("qryMyQuery ").SQL = "INSERT INTO [Tabel i MyDatabase] IN C:\MyDatabase.mdb' SELECT FROM [Din tabel denne database];"
Avatar billede puppetmaster Nybegynder
18. juni 2004 - 11:04 #8
Jamen, det er jo lige hvad jeg er ude efter.
Takker mange gange.
Så skal jeg bare hamre en formel sammen med en knap på, så VedKlik ændres Destinationstabel og database for alle de ønskede forespørgsler. KANON!
18. juni 2004 - 11:11 #9
:o)

Disse 2 egenskaber er som sagt ikke 'rigtige' egenskaber. Langt de fleste af egenskaberne i egenskabsarket resulterer blot i ændringer i SQL'en på samme måde.

De 'rigtige' egenkaber (f.eks. egenskaben SQL, som vi brugte herover) refererer du til på samme måde:

Msgbox currentdb.querydefs("qryMyQuery").Name

Prøv selv at skriv:
Msgbox currentdb.querydefs("qryMyQuery") efterfulgt af punktum, hvorved listen over egenkaber og metoder kommer frem (de grønne er metoder = handlinger)
Avatar billede puppetmaster Nybegynder
18. juni 2004 - 11:24 #10
Hmm....får dog en fejl i INSERT INTO sætningen...
18. juni 2004 - 11:33 #11
hmm, jeg kan se, at jeg glemte et ' i mit sidste eks. Den skal se således ud:
currentdb.querydefs("qryMyQuery ").SQL = "INSERT INTO [Tabel i MyDatabase] IN 'C:\MyDatabase.mdb' SELECT FROM [Din tabel denne database];"

Hjælper det?
18. juni 2004 - 11:34 #12
Du kan du også bare lave din forespørgsel på alm. vis og derefter gå i SQL og se hvordan den skal se ud...
Avatar billede puppetmaster Nybegynder
18. juni 2004 - 11:51 #13
Det hjalp ikke med '
Nå ja, når det bare er en tekststreng der bliver "tilføjet" forespørgslen, så er der jo ingen ko på isen.
Avatar billede puppetmaster Nybegynder
18. juni 2004 - 12:17 #14
Hmmm...et eller andet sted går det galt:
Mine forespørgsler indeholder i hvert fald ikke noget bagefter...! :(
Avatar billede puppetmaster Nybegynder
18. juni 2004 - 12:18 #15
Men de 2 egenskaber er ændret.....
18. juni 2004 - 12:25 #16
Hvordan ser din kode ud?
Avatar billede puppetmaster Nybegynder
18. juni 2004 - 13:23 #17
SQL'en i forespørslen:
SELECT * INTO MinTabel IN 'C:\MinDatabase.mdb'

VBA koden:
CurrentDb.QueryDefs("qryOverførMinTabel").SQL = "INSERT INTO MinTabel IN 'C:\MinDatabase2.mdb' * FROM MinTabel;"
18. juni 2004 - 13:26 #18
CurrentDb.QueryDefs("qryOverførMinTabel").SQL = "INSERT INTO MinTabel IN 'C:\MinDatabase2.mdb' SELECT * FROM MinTabel;"
18. juni 2004 - 13:31 #19
(der manglede lige en SELECT - ret vigtig :)
Avatar billede puppetmaster Nybegynder
18. juni 2004 - 13:36 #20
Det var min typo, der ER en SELECT i den faktiske kode....
Avatar billede puppetmaster Nybegynder
18. juni 2004 - 13:38 #21
Efter jeg har afviklet koden står der følgende i forespørgslen:

INSERT INTO MinTabel IN 'C:\MinDatabase2.mdb'
SELECT *
FROM MinTabel;
Avatar billede puppetmaster Nybegynder
18. juni 2004 - 13:39 #22
Forespørgslen får altså overskrevet sit indhold med det der står i VBA koden.
Avatar billede puppetmaster Nybegynder
18. juni 2004 - 13:41 #23
Meningen var at jeg ville have erstattet
SELECT * INTO MinTabel IN 'C:\MinDatabase.mdb'
med
SELECT * INTO MinTabel IN 'C:\MinDatabase2.mdb'
uden dog at skulle skrive indholdet af forespørgslen i VBA koden
Avatar billede puppetmaster Nybegynder
18. juni 2004 - 13:49 #24
Med den sidste linie mener jeg, at den faktiske forespørgsel er en DEL mere kompliceret end mit eksempel (selvfølgelig)
18. juni 2004 - 13:49 #25
Ja, det er et problem, som jeg ofte støder på i andre sammenhænge. :o(

Jeg plejer gerne at have en skabelon-query, som jeg går ud fra. I dette tilfælde kunne den have SQL'en:
SELECT * INTO MinTabel IN 'C:\dummy.mdb'
og måske hedde: "qryOverførMinTabel_Skabelon"
Herefter kører jeg så bare denne linie:
CurrentDb.QueryDefs("qryOverførMinTabel").SQL = replace(CurrentDb.QueryDefs("qryOverførMinTabel_Skabelon").SQL, "'C:\dummy.mdb'", "'C:\MinDatabase2.mdb'")
Avatar billede puppetmaster Nybegynder
18. juni 2004 - 14:13 #26
Ok, DET kan jeg bruge til noget. Tak.
18. juni 2004 - 14:18 #27
:o)
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
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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