Wolverin Skrevet 25. november 2004 Del Skrevet 25. november 2004 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
otsisjord Skrevet 26. november 2004 Del Skrevet 26. november 2004 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" Lenke til kommentar
Wolverin Skrevet 27. november 2004 Forfatter Del Skrevet 27. november 2004 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.ConnectionDim 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
otsisjord Skrevet 28. november 2004 Del Skrevet 28. november 2004 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
Wolverin Skrevet 30. november 2004 Forfatter Del Skrevet 30. november 2004 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
offko Skrevet 3. desember 2004 Del Skrevet 3. desember 2004 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
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå