Avatar billede ds-zim Nybegynder
02. marts 2001 - 14:58 Der er 8 kommentarer og
1 løsning

Metoder til at skrive til felt i tabel ?!?

Hvad findes der af metoder til at skrive til et felt i en tabel ?
Jeg er bekendt med opdatering af hele recordsets;

Dim DB as dao.database, RST as dao.recordset
Set DB = CurrentDB
Set RST = db.openrecordset(\"SkæG & BallAde\", ... )
RST.Edit
RST.Fields(\"Sjovt\") = \"Nej\"
RST.Update

men findes der ikke alternativer ? \'SetValue\'-handlingen kan åbenbart kun bruges i makroer ?!?

Cheers, Zim
Avatar billede janbangm Nybegynder
02. marts 2001 - 15:05 #1
Hejsa

SetValue er også tilgængelig i VB.

me.\"Sjovr\" = \"nej\"
02. marts 2001 - 16:36 #2
Hej ds-Zim,

Hvis du står på en formular bundet til tabellen \"SkæG & BallAde\", så kan du ganske rigtigt bare skrive:
Me!Sjovt = \"Nej\"

Hvis du skal gemme værdien i en tabel, som du ikke lige har \'fat\' i via en formular, så er Recordset-metoden den ene måde.

En anden måde er at køre en opdateringsforespørgsel, som opdatere feltet:

Dim DB as dao.database
Set DB = CurrentDB
Db.Execute \"Update [Skæg og Ballede] Set Sjovt = \'Nej\' Where ID = \" & AktuelID

...hvor AktuelID er nøglefeltet, som skal identificere den post, du vil ændre.

mvh
Thomas
Avatar billede privaten Nybegynder
02. marts 2001 - 19:45 #3
Eller endnu nemmere:

CurrentDb.Execute \"Update [Skæg og Ballede] Set Sjovt = \'Nej\' Where ID = \" & AktuelID

Så slipper man for Dim & Set statementet

03. marts 2001 - 06:14 #4
Jep, men så mister du muligheden for at checke på .RecordsAffected-egenskaben på db-objektet. Ex:

If db.RecordsAffected = 0 then
  MsgBox \"Et eller andet gik galt.....\"
  ...
End If

Det er principielt bedre (og pænere) at benytte en db-variable.

Men ellers har du ret :-)

/Thomas
Avatar billede privaten Nybegynder
06. marts 2001 - 11:37 #5
>> Thomas,

Man skal jo også kun bruge metoden hvis det er uden betydning om der blev opdateret noget...

Det er vel iøvrigt ikke bedre at bruge din metode, jeg kunne godt være enig at det måske var pænere, men bedre?!
06. marts 2001 - 14:04 #6
Hej Privaten,

I mange tilfælde er det fuldstændig ligegyldigt. Og jeg vil endda sige, at jo kortere kode, jo pænere.

Men der er bare mange situationer hvor koden slet ikke virker, hvis man ikke bruger DB-objektet. F.eks. når mam arbejder med tabledefs og querydefs.

Dertil kommer, at hvis man skal bruge currentdb flere gange i samme kode, så er der en performance-gevindst ved at bruge db.

Det, sammen med at man afskærer sig fra nogle muligheder (som f.eks. .recordsaffected) gør, at jeg mener man altid bør benytte db i stedet for currentdb. Kan du altid skælne hvornår man kan bruge currentdb? Jeg kan ikke i hvert fald.

/Thomas
Avatar billede moses Praktikant
06. marts 2001 - 15:41 #7
I sidste ende, må konklusionen være, at man ikke kan opdatere et felt - uden minimum at låse den ene record, som man vil opdatere i.

Om man så bruger korte eller lange kodestumper til det  ;-)
06. marts 2001 - 15:49 #8
Øh, hvad har låsning med sagen at gøre?

Desuden kan man da godt opdatere uden at låse - det hedder optimistisk låsning. Men det er vist en helt anden snak ;-)

/Thomas
Avatar billede ds-zim Nybegynder
06. marts 2001 - 18:01 #9
!
Tak for jeres interresse alle!
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