Avatar billede japlex Nybegynder
17. juli 2001 - 11:24 Der er 13 kommentarer og
1 løsning

Opdatering af recordset

Jeg har problemer med at opdatere mine tabeller og forespørgsler i min Access DB.

Jeg opererer med tre db forbindelser:

Data1 og data2 er forespørgsler mens data3 er en kundetabel.

Jeg har så en \"udvælg\" knap der udvælger 4 kunder og smider dem over i et array af labelfelter, samt sætter feltet \"Udvalgt\" til \"true\".

Jeg har ligeledes en \"Reset\" knap der dels fjerner indholdet af labelarrayet og dels sætter \"Udvalgt\" til \"false\" igen.

Men jeg har problemer med at få de forskellige recordsets ordentligt opdateret.

Her kommer koden:


******************************************************

Option Explicit

Private Sub cmdReset_Click()

Dim i As Integer

Do While Not Data3.Recordset.EOF
   
    If Data3.Recordset(\"Udvalgt\") = True Then
        Data3.Recordset.Edit
        Data3.Recordset(\"Udvalgt\") = False
        Data3.Recordset.Update
    End If
    Data3.Recordset.MoveNext
Loop

For i = 0 To 3
    lblMaGrøn(i) = \"\"
    lblTiGrøn(i) = \"\"
Next

End Sub

Private Sub cmdUdvælg_Click()

Dim i As Integer

For i = 0 To 3
    If Not Data1.Recordset.EOF Then
        lblMaGrøn(i) = Data1.Recordset(\"navn\")
        Data1.Recordset.Edit
        Data1.Recordset(\"Udvalgt\") = True
        Data1.UpdateRecord
        Data1.Recordset.MoveNext
    End If
Next i

\'Data2.Recordset.MoveFirst
For i = 0 To 3
    If Not Data2.Recordset.EOF Then
        lblTiGrøn(i) = Data2.Recordset(\"navn\")
        Data2.Recordset.Edit
        Data2.Recordset(\"Udvalgt\") = True
        Data2.UpdateRecord
        Data2.Recordset.MoveNext
    End If
Next i

End Sub


******************************************************
Avatar billede terry Ekspert
17. juli 2001 - 11:33 #1
The updaterecord method is the same as the edit and an update, so I think you should change it to Update instead. This is just a guess as I have never used it.
Avatar billede terry Ekspert
17. juli 2001 - 11:41 #2
do you have a reason for rejecting my answer?
(begrundelse?)
Avatar billede japlex Nybegynder
17. juli 2001 - 11:42 #3
I tried to change it but without success.

So I still need advice ;-)

The code is now:

*************************************************

Option Explicit

Private Sub cmdReset_Click()

Dim i As Integer



Do While Not Data3.Recordset.EOF
   
    If Data3.Recordset(\"Udvalgt\") = True Then
        Data3.Recordset.Edit
        Data3.Recordset(\"Udvalgt\") = False
        Data3.Recordset.Update
    End If
    Data3.Recordset.MoveNext
Loop

For i = 0 To 3
    lblMaGrøn(i) = \"\"
    lblTiGrøn(i) = \"\"
Next

End Sub

Private Sub cmdUdvælg_Click()

Dim i As Integer

\'Data1.Recordset.MoveFirst
For i = 0 To 3
    If Not Data1.Recordset.EOF Then
        lblMaGrøn(i) = Data1.Recordset(\"navn\")
        Data1.Recordset.Edit
        Data1.Recordset(\"Udvalgt\") = True
        Data1.Recordset.Update
        Data1.Recordset.MoveNext
    End If
Next i

\'Data2.Recordset.MoveFirst
For i = 0 To 3
    If Not Data2.Recordset.EOF Then
        lblTiGrøn(i) = Data2.Recordset(\"navn\")
        Data2.Recordset.Edit
        Data2.Recordset(\"Udvalgt\") = True
        Data2.Recordset.Update
        Data2.Recordset.MoveNext
    End If
Next i

End Sub

**************************************************
Avatar billede japlex Nybegynder
17. juli 2001 - 11:43 #4
Yes - your advice did not help ;-)
Avatar billede terry Ekspert
17. juli 2001 - 11:47 #5
Have you tried stepping through the code with the debugger to make sure your logic is OK?
Avatar billede japlex Nybegynder
17. juli 2001 - 11:56 #6
Yes - it seems OK
Avatar billede kaffe Nybegynder
17. juli 2001 - 19:14 #7
Der er en fejl i VB der gør, at der ikke kan opdateres når du bruger DAO under visse omstændigheder. Blandt andet hvis recordset er baseret på join af to tabeller eller hvis et krævet felt får en Null.

Problemet kan løses ved at slette join i tabellen (hvis det er muligt) eller checke at der er værdier i de rette felter.

Umiddelbart ser det ud til at du skal skifte fra DAO til ADO i stedet for. Så har du ikke problemet længere.

Torben

Avatar billede japlex Nybegynder
17. juli 2001 - 20:23 #8
>> kaffe

Jeg sad lige og fik samme mistanke efter at have læst lidt om emnet.

Nu vil jeg lige prøve det og viser det sig at det er rigtigt synes jeg du skal lave din kommentar om til et svar jeg kan give point
Avatar billede japlex Nybegynder
18. juli 2001 - 18:58 #9
Nu har jeg prøvet at skifte til ADO - MEN det ser stadig ud til at opdateringen af mine tabeller ikke foregår som de skal.

Kan nogen hjælpe ??
Avatar billede nordhni Nybegynder
20. juli 2001 - 11:30 #10
Det er vel ikke sådan, at der i koden er anvendt \'On error resume next\'? Prøv i det tilfælde, at kommentere denne linie ud. Det jeg er ude efter er, at når kommandoen .edit udføres, prøver Jet at udføre en lock på den Access page indenfor hvilken datarecorden ligger. Denne lock går ikke altid godt, og .edit returnerer en fejl, hvorved .update heller ikke kan lade sig gøre.
Avatar billede kaffe Nybegynder
20. juli 2001 - 12:27 #11
Står din adodc\'s locktype til 1-adLockReadOnly?
Avatar billede japlex Nybegynder
20. juli 2001 - 16:07 #12
Ingen af de afgivne svar har indtil nu været til megen gavn.

Faktisk har kommentaren fra Kaffe (17/07 2001 19:14:43) været den mest anvendelige. Jeg er nemlig nu skiftet til ADO men er stødt på andre problemer. Så Kaffe >> Hvis du laver din kommentar om til et svar får du pointene
Avatar billede kaffe Nybegynder
20. juli 2001 - 19:41 #13
Jamen så takker jeg for pointene :)
Avatar billede japlex Nybegynder
20. juli 2001 - 20:18 #14
Det var så lidt :-)
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
Kurser inden for grundlæggende programmering

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