Avatar billede celal Nybegynder
06. maj 2002 - 09:46 Der er 18 kommentarer og
1 løsning

Dato problem

Jeg har lavet en hændelsesprocedure til en chekbox. Denne hændelse skal ser således ud:

Private Sub Brev1_kryds_Click()
Dim Dbs As Database
Dim strSQL As String
Dim Dato As Date
Dim svar As Integer
Set Dbs = CurrentDb()
If Me.Brev1_kryds = True Then
    svar = MsgBox("True", vbOKOnly, Me.Kundenummer)
    Dato = Now()
    strSQL = "UPDATE TabA SET Brev1Dato= ' " & Dato & " ' where Kundenummer = ' " & Me.Kundenummer & " '"
    Dbs.Execute strSQL

Else
    svar = MsgBox("False", vbOKOnly)
    strSQL = "UPDATE TabA SET Brev1Dato= '' where Kundenummer = ' " & Me.Kundenummer & "'"
    Dbs.Execute strSQL

End If

End Sub


Det er meningen at Feltet Brev1Dato i tabelen TabA skal opdaters med dato ( = Now() ) når jeg sætter fluebenet i
chekboxen. og omvendt skal feltet rydes når jeg fjerner fluebenet. Men feltet Brev1Dato i tabelen TabA bliver ikke opdateret, det er stadig helt tomt.

Hvad skal jeg gøre, er der nogen som kan se fejlen??

Avatar billede terry Ekspert
06. maj 2002 - 09:54 #1
"UPDATE TabA SET Brev1Dato= '" & Format(now(),"yyyy-mm-dd") & "'where Kundenummer = ' " & Me.Kundenummer & "'"
06. maj 2002 - 09:55 #2
Prøv denne:

Private Sub Brev1_kryds_Click()
Dim Dbs As Database
Dim strSQL As String
Dim svar As Integer
Set Dbs = CurrentDb()
If Me.Brev1_kryds = True Then
    svar = MsgBox("True", vbOKOnly, Me.Kundenummer)
    strSQL = "UPDATE TabA SET Brev1Dato= Now() where Kundenummer = ' " & Me.Kundenummer & " '"
    Dbs.Execute strSQL

Else
    svar = MsgBox("False", vbOKOnly)
    strSQL = "UPDATE TabA SET Brev1Dato= null where Kundenummer = ' " & Me.Kundenummer & "'"
    Dbs.Execute strSQL

End If

End Sub
Avatar billede terry Ekspert
06. maj 2002 - 09:57 #3
missing a space, and this is ONLY valid IF kundenumer is a text field, if it snott then use the last example

"UPDATE TabA SET Brev1Dato= '" & Format(now(),"yyyy-mm-dd") & "'  where Kundenummer = '" & Me.Kundenummer & "'"

"UPDATE TabA SET Brev1Dato= '" & Format(now(),"yyyy-mm-dd") & "'  where Kundenummer = " & Me.Kundenummer
Avatar billede celal Nybegynder
06. maj 2002 - 10:06 #4
Terry: Der sker ikke noget, kundenummer er text, og jeg har brugt den første af dem du viser, feltet Brev1Dato er stadig tomt, når jeg sætter fluebenet
Avatar billede nih Novice
06. maj 2002 - 10:17 #5
Private Sub Brev1_kryds_Click()

If Me.Brev1_kryds = True Then

    me.Brev1Dato= now()
Else
    me.brev1dato = null
end if

End Sub
Avatar billede terry Ekspert
06. maj 2002 - 10:18 #6
Well as Thomas mentions you have to use Null and not '' when you want to set the date field to empty AND the field must accept NULL. Also, are you sure that you have a Kundenummer = Me.Kundenummer ?

Change Dbs.Execute strSQL to Docmd.runsql strSQL this should display a warning before the actual update and this may help you find the problem!
Avatar billede nih Novice
06. maj 2002 - 10:19 #7
Er det ikke fordi du prøver at opdatere en post der er den aktuelle i formen.

Niels
Avatar billede celal Nybegynder
06. maj 2002 - 10:20 #8
Nih: jo det er lige det jeg prøver på, er det ikke muligt da?
Avatar billede nih Novice
06. maj 2002 - 10:21 #9
me!Brev1Dato= now() - Prøv evt. med '!'
Avatar billede nih Novice
06. maj 2002 - 10:23 #10
Ved det faktisk ikke, men er det ikke nemmere at bruge det aktuelle recordset fra formen.
Avatar billede celal Nybegynder
06. maj 2002 - 10:25 #11
Jeg har lige lavet en textbox til test og har så skrevet:
Me.Test1  = Format(Now(), "dd-mm-yyyy")

Det virker, så skriver den i min tabel felt (brev1Dato)...Men det er ikke den løsninge jeg leder efter.

Hvad kan jeg ellers gøre?
Avatar billede terry Ekspert
06. maj 2002 - 10:33 #12
the date format must be either mm-dd-yyyy or yyyy-mm-dd
Avatar billede terry Ekspert
06. maj 2002 - 10:33 #13
IF you cant get itto work then send it to dktebrsa@europe.lego.com and I will take a look
Avatar billede nih Novice
06. maj 2002 - 10:35 #14
Private Sub Brev1_kryds_Click()
  If Me.Brev1_kryds = True Then
    me!Brev1Dato= Format(Now(), "dd-mm-yyyy")
Else
    me!brev1dato = #30/12/1899#  ' svarende til -1 = false
end if
End Sub

Hvis din checkbox er bundet til feltet dato skifter den mellem on/off ved at at bruge ovenstående kode.
Ved at bruge '!' henviser du direkte til feltet i formens underliggende foresp.

Mit bedste bud
Niels
Avatar billede celal Nybegynder
06. maj 2002 - 10:47 #15
me!Brev1Dato= Format(Now(), "dd-mm-yyyy")

Det er jo lige det jeg skal bruge!, så virker det.

Nih: vil det sige at jeg bare skal bruge Me! for at opdatere i en tabel som er tilknyttet formen?
Avatar billede nih Novice
06. maj 2002 - 10:53 #16
Jah - Måske - ehh ;o)

Det tror jeg nok - '!' bruges som genvej flere steder i VBA - ihvert fald virke 'me.' kun på de objekter der direkte er defineret i formen.

Niels
Avatar billede nih Novice
06. maj 2002 - 10:56 #17
Foresten bør du nok bruge:

me!Brev1Dato= Now()

og angive formattet i din textbox
Avatar billede celal Nybegynder
06. maj 2002 - 11:00 #18
okay, mange tak
Avatar billede celal Nybegynder
06. maj 2002 - 11:01 #19
Jeg har forresten ikke nogen textbox til dato, det bliver smidt direkte ned i tabelen, efter jeg har sat fluebenet
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