Avatar billede jsl Nybegynder
28. februar 2002 - 22:52 Der er 17 kommentarer og
1 løsning

sæt true med cmd

Jeg har en tabel, der hedder TblSamElev, som bl.a. indeholder feltet "henlagt", som er formateret til datatypen ja/nej.
På den tilhørende formular, FormSamElev, kan man se indholdet af tabellen i en liste, Liste0, og en knap, cmdArkiv.
Knappen skal sætte værdien i afkrydsningsfeltet til true, og hvordan gør jeg det??
Jeg har det her ind til videre:

Me!Liste0.RowSource = "SELECT Henlagt FROM TblSamElev WHERE By ='" & Me!LstBy & "'"
Er det helt galt?
Avatar billede jsl Nybegynder
28. februar 2002 - 22:54 #1
Det er kun det aktive navn, som værdien skal kunne ændres på.
Avatar billede nih Novice
28. februar 2002 - 23:11 #2
Din tabel, har den et ID felt  ???
Avatar billede mugs Novice
28. februar 2002 - 23:39 #3
Private Sub cmdArkiv_Click()
Forms!FormSamElev!henlagt.SetFocus
henlagt = True
Me.Refresh
End Sub
Avatar billede nih Novice
28. februar 2002 - 23:44 #4
Private Sub cmdArkiv_Click()
  If Not Me.NewRecord Then
    Dim x As Boolean
    Dim strSQL As String
    x = True
    strSQL = "UPDATE tblSamelev SET henlagt = " & x & _
        " WHERE id = " & Me.Liste0
    CurrentProject.Connection.Execute strSQL
    Me.Requery
  End If
End Sub

Men den kræver et id fra din liste......

Niels
Avatar billede nih Novice
01. marts 2002 - 00:07 #5
If Not Me.NewRecord Then
    Dim x As Boolean
    Dim strSQL As String
    x = Not DLookup("henlagt", "tblSamelev", "id = " & Me.Liste0)
    strSQL = "UPDATE tblSamelev SET henlagt = " & x & _
        " WHERE id = " & Me.Liste0
    CurrentProject.Connection.Execute strSQL
    Me.Refresh
  End If

med den her bliver feltet henlagt modsat af hvad det var før.

Niels
01. marts 2002 - 08:38 #6
jsl-> du burde bare kunne skrive:
Private Sub cmdArkiv_Click()
  docmd.setwarnings false
  docmd.RunSQL "Update tblSamElev Set Henlagt = True Where [ID] = " & Me!Liste0  docmd.Setwarnings true
End Sub

Koden forudsætter (som nih's) at du har et nøglefelt i din liste og at egenskaben "Bundet kolonne" er sat til denne kolonne.
Udskift [ID] med navnet på dit nøglefelt.

/Thomas
Avatar billede nih Novice
01. marts 2002 - 08:53 #7
Godmorgen

'docmd.RunSQL' og 'CurrentProject.Connection.Execute' er der nogen forskel, udover at vi som besvarer spørgsmål ikke skal tænke på om spørgeren bruger ADO eller DAO.

Niels
01. marts 2002 - 09:12 #8
'Morgen Niels,

Jeg foretrækker selv .execute-metoden, men for nybegyndere er den anden mere forståelig. Og som du selv siger, så er den uafhængig af ADO og DAO...
Avatar billede jsl Nybegynder
01. marts 2002 - 09:38 #9
Jeg har siddet her til morgen, og prøvet alle metoder, men jeg kan ikke få nogle af dem til at virke. - selv ikke engang SQL sætningen, selvom den nok skulle være til at forstå. Mit ID felt hedder CPR. (Jeg bruger Access 97).
Avatar billede nih Novice
01. marts 2002 - 10:28 #10
Me!Liste0.RowSource = "SELECT cpr, Henlagt FROM TblSamElev WHERE By ='" & Me!LstBy & "'"
me.list0.requery

Nu har du cprnr med i listen. Sæt listens egenskab:
bundetkollone = 1
antalkolloner = 2
kollonebredde = 0;3

Knappen:
    Private Sub cmdArkiv_Click()
  If Not Me.NewRecord Then
    Dim x As Boolean
    Dim strSQL As String
    x = True
    strSQL = "UPDATE tblSamelev SET henlagt = " & x & _
        " WHERE cpr = " & Me.Liste0
    docmd.runsql strSQL
    Me.Requery
  End If
End Sub

Niels
Avatar billede nih Novice
01. marts 2002 - 10:33 #11
Det er den post der valg i listen, som koden arbejder på - Det kunne godt være en anden end den som er den aktive post i formularen.

Niels
01. marts 2002 - 12:53 #12
Hvis dit CPR-nr er af datatypen Tekst, så skal min kode se således ud:
Private Sub cmdArkiv_Click()
  docmd.setwarnings false
  docmd.RunSQL "Update tblSamElev Set Henlagt = True Where [CPR] = '" & Me!Liste0 & "'"
  docmd.Setwarnings true
End Sub
Avatar billede jsl Nybegynder
02. marts 2002 - 16:40 #13
Nu har jeg langt om længe fået det til at virke. Jeg oprettede en ny formular og vupti, så virkede det hele. Der må have været en fejl i den første formular.....
Når jeg udfører kommandoen, så kan jeg først se rettelsen efter at have genstarte formularen.
Hvordan får jeg listen til at opdatere med det samme, jeg udfører kommandoen?
Avatar billede nih Novice
02. marts 2002 - 20:56 #14
Hvilken kode bruger du ????

'Me.Requery'  Burde opdatere formularen og den bagved liggende forespørgsel

Niels
Avatar billede jsl Nybegynder
03. marts 2002 - 14:43 #15
Jeg bruger den her:
Private Sub cmdArkiv_Click()
  If Not Me.NewRecord Then
    Dim x As Boolean
    Dim strSQL As String
    x = True
    strSQL = "UPDATE tblSamelev SET henlagt = " & x & _
        " WHERE cpr = " & Me.Liste0
    docmd.runsql strSQL
    Me.Requery
  End If
End Sub
Avatar billede nih Novice
03. marts 2002 - 15:20 #16
Prøv at skifte 'me.requery' ud med 'Me.Refresh'

Du kan også tilføje linjen:
'Liste0.Requery'
i bunden af koden.

måske kan Thomas hjælpe med en forklaring på forskellen af me.requery og me.refresh 

Niels
Avatar billede mugs Novice
03. marts 2002 - 17:15 #17
nih > Jeg mener, at forskellen ligger i, at me.refresh ikke tilføjer nye poster men blot opdaterer bestående.

(Efter tidligere at være belært af Hr. Jepsen):o)
Avatar billede jsl Nybegynder
07. april 2002 - 17:45 #18
Nå ja....
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