Avatar billede hnteknik Novice
16. november 2003 - 18:05 Der er 7 kommentarer og
2 løsninger

Querydef: fra DAO til ADO

Jeg en større databasse, som skal løftes op fra 97 til Xp ( og videre til M$ SQL), så det er vel på tide at sige farveller til DAO og kaste sig over ADO. Det skal nok give nogen hovedpine; I ved den der gemmer til natten...

Jeg har følgende kode, som henter SQL teksten i min queries og sammen med anden dynamisk SQl danner noget ala 'slec * ... in ( select * ..)

Hvordan foår jeg fat i sql teksten under ADO. Skal jeg hve fat i Command under ADOX. Jeg skal gemme querien. Er der ikke noget med ADOX, at man ikke kan se de gemte queries og at bassen vokser uhemmet ???
Er der noget om, at noget har bedst af at blive i DAO ??? Henrik

'--- Dette funker i Acc 97
Function ListQryValues(strTable As String, Item As Integer)
    Dim db As Database
    Dim Qry As QueryDef
       
    Set db = CurrentDb()
    Set Qry = db.QueryDefs(strTable)
    ListQryValues = Qry.Properties(Item).Value
 
    db.close

End Function

Function GetQryNavn(qrynavn As String)
' henter Qry navn
Dim dumme As String
    dumme = ListQryValues(qrynavn, 4)
    GetQryNavn = Left$(dumme, Len(dumme) - 3)
End Function
Avatar billede terry Ekspert
16. november 2003 - 18:09 #1
hnteknik>You can use ADO and DAO at the same time in Access so there may be no need to change anything.

Just make sure you have a refrence to ADO and DAO and then when you declare your variables prefix them with DAO or ADODB

example

DIM rsDAO as DAO.recordset
DIM rsADO as ADODB.recordset
Avatar billede hnteknik Novice
16. november 2003 - 18:17 #2
Hi Terry
I know the mixing possibilities, however I thought, that a clean ADO would be a better foundation for at later migration.

One solution might be to keep some of the triggy ones in DAO.
Anyway, I have to do some optimization anyhow, so It any have a straight solution.

Converting the code straight to XP crashed the Acc XP and it is not the API part, so I have to go through eanct function anyway.

Henrik
16. november 2003 - 18:26 #3
Avatar billede hnteknik Novice
16. november 2003 - 19:28 #4
>>thomas - jeg har set din reference før og forstor ikke dit speciffikke link, et mere relevant ville f.eks.  være:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/mdaobj01_15.asp eller
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndao/html/daotoadoupdate.asp eller
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndao/html/daotoado.asp

og andre. Jeg har også det +100 sider white paper in word.DOC:
Migrating from DAO to ADO Using ADO with the Microsoft Jet Provider

Det har bare ikke bragt mig nærmere på en løsning af ovenstående.

Svaret ind til videre må være far med lempe. Konverter det, der er ligetil i white paper og behold resten i DAO.

Disse papsers e 3-4 år gamle og jeg havde håbet på noget last minute knwledge, førend jeg bevidstløs kaster mig over en ADO migrering.
Avatar billede hnteknik Novice
16. november 2003 - 19:47 #5
>> Syntes nok, at jeg havde løst det et sted.

Det er et af mine problemer tilsyneladende -> Queries dannet med ADOX kan ikke 'ses' og kan f.eks. ikke bruges som recordsource til f.eks. forms eller rapporter. Så er fanden løs i laksegade.

"Creating and Modifying Stored Queries in Microsoft Access Databases with ADOX"
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnacc2k/html/adocreateq.asp

"Important Although it is possible to create and modify a stored query in an Access database by using Microsoft ActiveX® Data Objects Extensions for Data Definition Language and Security (ADOX), if you do so your query won't be visible in the Access Database window or in any other part of the Access user interface—for example, you can't set the RecordSource property of a form to a query created with ADOX, nor can you import a query created with ADOX into another database. However, you can still run stored queries created by using ADOX from ADO code. "
16. november 2003 - 20:59 #6
hnteknik-> mit link giver en nem oversigt over alle de ting, man kunne med DAO med eksempler på hvordan man gør det samme med ADO. Mere specifikt kunne man have skrevet: http://msdn.microsoft.com/library/en-us/dndao/html/daotoadoupdate_topic6.asp?FRAME=true#daotoadoupdate_topic6f hvor netop querydefs bliver beskrevet.
Avatar billede hnteknik Novice
17. november 2003 - 13:52 #7
>>thomasjepsen

Efter min opfattelse giver dit link en henvisning til 'TransferText action/Method' eller DoCmd.TransferText ([TransferType], [SpecificationName], [TableName], [FileName], [HasFieldNames], [HTMLTableName], [CodePage])

Hvad har det med ADO/DAO at gøre ??? eller er jeg helt afmarcheret
---------
Pkt1: jeg har brug for at hente teksten i gemte SQL forespørgelser ( for det meste views). Jeg har ikke testet det, men kan måske gøres ved at adspørge om indholdet i : cmd.CommandText

Jeg har nogle grundSQl sætninger der danner grundlaget for en række rapporter.
Brugeren udsøger i DAO en række IDer som matcher et søgekriterie med søgepunkter i en hovedtabel og 20 relaterede subtabeller. Derfor gemmer jeg i en temp SQL ( Den skal dog kunne ses af en rapport) indholdet af cmd.CommandText + " where ID in ( " + "sql teksten som giver mine udsøgte IDer)

Hvis cmd.CommandText  kan give mig en tekststreng og ADO kan gemme et view, som kan ses sekunder efter af en rapport eller kan tildeles som en recordsource,
er jeg hjemme.

Henrik
17. november 2003 - 14:04 #8
Okay, dette er totalt mystisk!! Jeg har dette link liggende som genvej. Men når jeg selv klikker på den, så dukker denne side op:

http://msdn.microsoft.com/library/en-us/dndao/html/daotoadoupdate.asp

Men da jeg klikkede på mit eget link her på eksperten, fik jeg den side, som du omtaler med Docmd.Transfer....

Så jeg forstår godt at du synes, at det var et underligt svar.

Men ovenstående var altså det jeg mente!!!

Beklager!
Avatar billede hnteknik Novice
18. november 2003 - 10:01 #9
Konklusionen må være, at noget stadig skal snurre i DAO og andet nok har bedst af at blive konverteret. I får begge points for jeres velvillige bidrag til belysning af problemet. Håber det er OK.
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