Gå til innhold

access 97 VBA over til access 200x


Anbefalte innlegg

Hei.

Jeg er opplært til å programmere i VBA (Visual Basic for Applications) som følger med i office.

Problemet er at jeg lærte dette da det var office 97 som var programvaren, og det er fremdeles slik jeg programmerer.

 

Dette medfører at jeg må programmere i access 97, og kan ikke bruke 2000, 2002, 2003 utgaven av programmet når jeg skal lage slikt.

 

årsaken til det er at jeg bruker følgende teknikk.

 

Dim rs As Recordset
Dim db1 As database
Set db1 = CurrentDb()
Set rs = db1.OpenRecordset(sql settning)
rs.MoveFirst
...

 

Dette fungerer ikke å gjøre i en nyere utgave, og jeg klarer ikke ut fra hjelp filene i access 2002 (office XP) å forstå hva jeg skal skrive for å gjøre samme operasjonen.

 

Noen som vet, og som kan gi meg kode eksempel og en forklaring??

Lenke til kommentar
Videoannonse
Annonse
Har ikke noe særlig peiling på VB men jeg har gjort det slik ved et tilfelle og det fungerte. Håper det er til hjelp.

 

Dim CN As ADODB.Connection
Dim RS As ADODB.Recordset

Set CN = CurrentProject.Connection
Set RS = New ADODB.Recordset

RS.Open "SQL setningen"

Hei.

Takk for svaret ditt.

Forsøkte å implementere koden, og det ble som følger da.

 

Dim CN As ADODB.Connection

Dim RS As ADODB.Recordset

Set CN = CurrentProject.Connection

Set RS = New ADODB.Recordset

 

Dim sql1 As String

sql1 = "select * from test_tab"

RS.Open (sql1)

........

 

Ved å kjøre programmet i debug modus (trykker F5 mens jeg står i koden, og trykker F8 for å gå en og en linje ned), så får jeg ingen feilmelding på selve connection, men jeg får en runtime error når jeg kommer til RS.Open settningen.

Da sier den at denne typen connection er ulovlig eller feilskrevet.

 

Ser du hva jeg har gjort galt?

Har du et lite eksempel på hvordan du har gjort det som fungerer.

Et recordset som leser alt fra en tabell, og lister ut første raden for eksempel?

 

Slik jeg gjorde det før ville det blitt

Private Sub cmdProsesser_Click()

Dim RS As Recordset

Dim db1 As database

Set db1 = CurrentDb()

Dim sql1, listut As String

sql1 = "select * from test_tab"

Set RS = db1.OpenRecordset(sql1)

rs.movefirst

listut = rs.felt_1

msgbox listut

RS.Close

End Sub

 

I Access 97 vil denne lille snutten av en kode åpne tabellen som et recordset, den vil plassere seg på første rad og lese dette inn i en variabel, så tilegner jeg et felt i tabellen til en annan variabel som jeg så skriver ut i en meldingsboks på skjermen.

Så kobler jeg ned recordset igjen.

 

Hva vil dette bli i access 200x verjonene?

Lenke til kommentar

Jommen ikke godt å si hvordan dette skal gjøres. Men måten jeg gjorde noe lignende på var at jeg deklarerte Connectionen og recordsetet under general declarations. Vet ikke om det er viktig i dette tilfellet, men det funka i hvertfall for meg.

 

På click hendelsen til knappen skrev jeg som følger:

 

   Dim strSQL  AS String
   Set CN = CurrentProject.Connection
   Set RS = New ADODB.Recordset
   
   RS.Open "SELECT MAX(InventarNr) AS High FROM tblInventar WHERE GjenstandsNr = " & Form_skjInventar.GjenstandsNr.Value & "", CN, adOpenDynamic
   strSQL = RS("High)
   
   Form_skjInventar.INVENTARNR.Value = strHigh + 1
   RS.Close

 

Her blir jo svaret angitt som High og satt til recordsettet, for så å vises i en tekstboks i et skjema. Jeg tror det er viktig å ha med de to elementene etter SQL setningen. Er nok ute på litt tynn is her gitt.. Håper det er til litt hjelp ihvertfall. Men det må vel være andre her på forumet som har bedre peil på VB en meg?

Lenke til kommentar

Nei, jeg kan ikke deklarere recordset globalt, for det er enormt mange recordset som kommer til å bli benyttet i den basen etterhvert og de skal ikke ha tilgang til hverandre.

Dessuten kommer det til å bli et kaos uten like om alle settene skulle vært globale.

 

Er det ingen her som kan dette???

Lenke til kommentar

Du kan fortsette å bruke DAO i 2000+ versjonene. Det du trenger er to ting

 

1 - i VBE - Tools | References, sett en hake for Microsoft DAO 3.6 Object Library

2 - deklarer alle DAO objekter eksplisitt

 

dim rs as dao.recordset

dim db as dao.database

dim qdf as dao.querydef

...

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...