Med följande kod försöker jag hämta poster där bl.a galldat är större än dagens datum. När jag kör programmet verkar den inte ta hänsyn till mitt urval utan tar med poster vars galldat är tidigare än Dagens datum. I databasen har fältet galldat fälttypen "datum/tid". Vad gör jag för att den även ska använda galldat som ett urvalsbegrepp? Omge datumet med # tecken: <info> Tack för hjälpen, jag hade en aning om detta med # tecken men placerade dom fel. Tack Vad finns det för anledning att använda Double datatypen? >Vad finns det för anledning att använda Double datatypen? Detta känner jag till. Men varför inte använda datum datatypen? Något fel med den?Datumhantering mellan VB 6 & Access databas
Public Sub grid2()
Dim datNu As Variant
Dim intAvtK As Integer
'
datNu = Format(Now, "yyyy-mm-dd")
intAvtK = 1
' UPPDATERAR GRID MED AVTAL FRÅN AVTALKROPP ''''''''''''''''''''' '
MSHFlexGrid1.Visible = False
MSHFlexGrid3.Visible = False
rubr1.Visible = False
rubr2.Visible = True
Adodc2.ConnectionString = glb_ADO
Adodc2.RecordSource = "SELECT term,tanknr,avtalnr,avtalkat,avtalkatnr,knr,bertyp,hantpostnr,galldat FROM avtalkropp where knr = " & txtKnr.Text & " and avtalkatnr <> " & intAvtK & " and galldat >" & datNu
Adodc2.Refresh
With Adodc2.Recordset
If .RecordCount = 0 Then
MsgBox LoadResString(5072)
txtKnr.SetFocus
SendKeys "{home}+{end}"
Exit Sub
End If
IntTerm = .Fields("term")
intTanknr = .Fields("tanknr")
intAvtalnr = .Fields("avtalnr")
' intAvtalskat = .Fields("avtalkatnr")
intKnr = .Fields("knr")
strTyp = .Fields("bertyp")
intHantPostnr = .Fields("hantPostnr")
'datNu = .Fields("galldat").Value
If .RecordCount <> 0 Then
If MSHFlexGrid2.Visible = False Then
MSHFlexGrid2.Visible = True
End If
Else
MSHFlexGrid2.Visible = False
End If
End With
End Sub
Hälsningar, SörenSv: Datumhantering mellan VB 6 & Access databas
<code>
Public Sub grid2()
Dim datNu As Variant
Dim intAvtK As Integer
'
datNu = Format(Now, "yyyy\/mm\/dd")
intAvtK = 1
' UPPDATERAR GRID MED AVTAL FRÅN AVTALKROPP ''''''''''''''''''''' '
MSHFlexGrid1.Visible = False
MSHFlexGrid3.Visible = False
rubr1.Visible = False
rubr2.Visible = True
Adodc2.ConnectionString = glb_ADO
Adodc2.RecordSource = "SELECT term, tanknr, avtalnr, avtalkat, avtalkatnr, knr, bertyp, hantpostnr, galldat FROM avtalkropp WHERE knr = " & txtKnr.Text & " AND avtalkatnr <> " & intAvtK & " AND galldat > #" & datNu & "#"
Adodc2.Refresh
With Adodc2.Recordset
If .RecordCount = 0 Then
MsgBox LoadResString(5072)
txtKnr.SetFocus
SendKeys "{home}+{end}"
Exit Sub
End If
IntTerm = .Fields("term")
intTanknr = .Fields("tanknr")
intAvtalnr = .Fields("avtalnr")
' intAvtalskat = .Fields("avtalkatnr")
intKnr = .Fields("knr")
strTyp = .Fields("bertyp")
intHantPostnr = .Fields("hantPostnr")
'datNu = .Fields("galldat").Value
If .RecordCount <> 0 Then
If MSHFlexGrid2.Visible = False Then
MSHFlexGrid2.Visible = True
End If
Else
MSHFlexGrid2.Visible = False
End If
End With
End Sub
</code>Sv: Datumhantering mellan VB 6 & Access databas
Min gamla käpphäst, lagra Datum/Tid som Double
<info/>
Dim datNu As Double
Dim intAvtK As Long
datNu = CDate(Now)
Ändra i Access så att detta fält blir Double
and galldat > " datNu
Testa att skriva :
Dim datNu As Double
datNu = CDate(Now)
MsgBox datNu
så förstår du principen,dvs använd matematik , det ena talet är större eller mindre än det andra.Sv: Datumhantering mellan VB 6 & Access databas
Sören
Ps. Tack även till SvenPonSv: Datumhantering mellan VB 6 & Access databas
Sv: Datumhantering mellan VB 6 & Access databas
Dim datNu As Double
Därför att det är det korrekta sättet att ta in datNu = CDate(Now) som ett decimalt tal.
Just nu i skrivande stund blev denna Double 37860.002129........
Mycket tilltalande om vill behandla Datum/Tid som vanlig matematik plus minus.
Heltalsdelen representerar dagens datum den fractala delen klockslag
klockslag ,99999 motsv 23:59:59. matte Andreas det gillar du inte :-).
Fö så tjaffsar jag inte mer med dig om detta.Sv: Datumhantering mellan VB 6 & Access databas