Tags:
ms
acces
visual
basic
jeg har opdateret min MS Acces fra 2010 udgaven til 2016. Jeg har en fugledatabase, som jeg registrerer fugleobservationer i. En af funktionerne er at jeg i min formular for en fugleart kan se hvornår jeg har set arten første gang i året og sidste gang i året, baseret på data tilbage fra 1971.
Jeg har ikke selv udført programmeringen og er derfor på Herrens Mark!
Programmeringen ser ud som følger:
Public Function ObsDt(varOp As String, varArt As String, Optional varLokalitet As String, Optional varMonth As String)
'Bruges til at returnere observationsdato pr. art.
'varOp angiver Max elle min dato
'varArt angiver fuglearten (art-ID)
'varlokalitet angiver lokaliteten (optional)
'varMonth angiver outputformat for måned (Blank for MM, S for MMM, L for MMMM (optional)
Dim db As Database
Dim rs
Dim varSql As String 'SQL-strengen der skal kalde obsdatoen
Dim varMmdd As String 'Resultatet fra SQL-kaldet
Dim varMm As Integer 'Månednummer til at finde månedsnavnet
Dim MmShort As Variant 'Korte månedsnavne
Dim MmLong As Variant 'Lange månedsnavne
'Konstanter
MmShort = Array("jan", "feb", "mar", "apr", "maj", "jun", "jul", "aug", "sep", "okt", "nov", "dec")
MmLong = Array("januar", "februar", "marts", "april", "maj", "juni", "juli", "august", "september", "oktober", "november", "december")
If varLokalitet <> "" Then
varSql = "SELECT " & varOp & "(Right('00' & Month([ObsDato]),2) & Right('00' & Day([obsdato]),2)) FROM FUGLE WHERE Art = " & varArt & " AND lokalitet = " & varLokalitet & " GROUP BY FUGLE.Art"
Else
varSql = "SELECT " & varOp & "(Right('00' & Month([ObsDato]),2) & Right('00' & Day([obsdato]),2)) FROM FUGLE WHERE Art = " & varArt & " GROUP BY FUGLE.Art"
End If
Set db = CurrentDb
Set rs = db.OpenRecordset(varSql)
If rs.BOF And rs.EOF = True Then
'Hvis ikke sql-kaldet returnerer nogle rækker
ObsDt = "ikke observeret"
Else
'Find laveste mmdd
varMmdd = rs.Fields(0)
'Find måned i ønsket outputformat
If varMonth = "S" Then 'short month
varMm = Left(varMmdd, 2) - 1
ObsDt = Right(varMmdd, 2) & ". " & MmShort(varMm)
ElseIf varMonth = "L" Then 'long month
varMm = Left(varMmdd, 2) - 1
ObsDt = Right(varMmdd, 2) & ". " & MmLong(varMm)
Else 'number af month
ObsDt = Right(varMmdd, 2) & "." & Left(varMmdd, 2)
End If
End If
rs.Close
Set db = Nothing
Set rs = Nothing
End Function
ER der nogen der kan hjælpe????????
1 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
0
problemet starter i linjen
varMm = Left(varMmdd, 2) - 1
hvor der er et problem med Left