Oprettet man. d. 08. februar 2010 kl. 23:50:26

dane022
dane022 (11.005 point. Point ude: 420)

Datoudsøgning af ikraftdato mellem 2 datoer

I min tabel er der en oversigt over medarbejderdata og 2 datoer for oplysningernes start- og slutdato.
Der er ikke noget datooverlap.

Det kunne f.eks. så sådan ud:
Medarbejdernr  startdato    slutdato
1              1-1-2009    31-12-2009
1              1-1-2010
2              1-4-2009    30-06-2009
2              1-7-2009
osv

Hvis jeg ønsker at udsøge medarbejderdata (på medarbejdernr) pr. en bestemt dato, så jeg får vist data som var gældende på den dato, hvordan gøres det så i vba?

Skrevet tor. d. 11. februar 2010 kl. 00:17:53| #1

ellebe
ellebe (3.120 point)
modtager.IKKE.point
dette giver medarbejdernr:

with currentdb.openrecordset("select * from <tabel> where <searchdato> >= startdato and <searchdato> <= slutdato")
while not .eof
debug.print !medarbejdernr
.movenext:wend:end with

Skrevet tor. d. 11. februar 2010 kl. 22:10:26| #2

dane022
dane022 (11.005 point)
"Der er syntaksfejl i FROM-delsætningen"
Kode: Private Sub Kommandoknap33_Click()
With CurrentDb.OpenRecordset("select * from <stamoplysninger> where <ret oplysninger pr> >= <oplysninger start> and <ret oplysninger pr> <= <oplysninger slut>")
While Not .EOF
Debug.Print !medarbejdernr
.MoveNext: Wend:
End With
End Sub

Skrevet fre. d. 12. februar 2010 kl. 18:19:00| #3

ellebe
ellebe (3.120 point)
modtager.IKKE.point
Du skal ikke bruge vinkelparentes omklamring - det er blot noget jeg tilføjede for at illustrere ting 'der skal hedde noget andet i virkeligheden'

Feltnavne, med mellemrum, som 'ret oplysninger pr', skal omklamres i kantparenteser.

Der kan være en god ide først at lave forespørgslen i databasevinduet->forespørgsler - chekke at resultatet er som ønsket og derefter bruge sql udtrykket i vba koden.

Skrevet fre. d. 12. februar 2010 kl. 18:35:37| #4

dane022
dane022 (11.005 point)
"Der er for få parametre, der var ventet 1"
kode: With CurrentDb.OpenRecordset("select * from stamoplysninger where [ret oplysninger pr] >= [oplysninger start] and [ret oplysninger pr] <= [oplysninger slut]")
While Not .EOF
Debug.Print !Medarbejdernummer
.MoveNext: Wend:

Skrevet fre. d. 12. februar 2010 kl. 20:30:55| #5

ellebe
ellebe (3.120 point)
modtager.IKKE.point
'ret oplysninger pr' er nok ikke et feltnavn så.

Hvis 'oplysninger start' og 'oplysninger slut' er feltnavne, skal du sammenligne med noget der kan konverteres til dato streng.

dato="4-1-2009" ' bemærk, 1. april, amerikansk dato: mm-dd-yyyy

sql = "select * from stamoplysninger where #" & dato & "# >= [oplysninger start] and #" & dato & "# <= [oplysninger slut]"

with currentdb.openrecordset(sql)
...



Nu ønsker man jo ofte en dato som parameter - indeholdt i en variabel eller et argument til funktion og denne vil, på datoer der kan mistolkes, på en computer med danske sproginstillinger, blive til en forkert datostreng overfor sql database funktionaliteten.

Derfor anvender jeg ofte denne funktion:

Function amrDate(dat As Date)
    amrDate = "#" & Format(dat, "mm-dd-yyyy") & "#"
End Function

Skrevet fre. d. 12. februar 2010 kl. 21:46:22| #6

dane022
dane022 (11.005 point)
Der er noget vigtigt jeg har glemt at fortælle dig. De data der skal hentes frem i søgningen, skal hentes til en ubundet formular, så man ikke retter i den eksisterende record, men kun retter de ubundne data som til sidst bliver til en ny record i tabellen.

Jeg er ikke ekspert, men jeg ved at denne nye oplysning gør det en del sværere. Jeg kan sagtens smide flere point i, hvis det er nødvendigt. Er det noget du kan hjælpe mig med, eller er vi derude hvor vi må opgive?

Skrevet lør. d. 13. februar 2010 kl. 01:08:45| #7

dane022
dane022 (11.005 point)
Jeg har fået løst mit problem, men du må gerne få pointene for ihærdighed, hvis du smider et svar

Skrevet lør. d. 13. februar 2010 kl. 09:23:43| #8

ellebe
ellebe (3.120 point)
modtager.IKKE.point
Skriver ikke for at hjælpe men for at belyse - i #2, hvor lidt der skal til for at 'loop through recordset'
Generelt er det ikke interessant at en spørger har fået løst problemet, men hvordan.

Skrevet lør. d. 13. februar 2010 kl. 20:01:51| #9

dane022
dane022 (11.005 point)
Måden det er løst på, er at combo boxen "oplysninger pr", får rowsource fra den record hvor medarbejdernr matcher.

Med f.eks. [Oplysninger start] = [oplysninger pr].Column(2) i comboens afterupdate, henter man indhold frem til de ubundne felter

Hvad gør jeg med point?

Skrevet tir. d. 16. februar 2010 kl. 21:21:10| #10


Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   

   

Seneste spørgsmål

tælle n-karakterer fra højre mod venstre

Oprettet den 3. september 2010 kl. 08.59
hnto giver 30 point for svar | Giv et svar »

Mugs, du har lidt points tilgode

Oprettet den 2. september 2010 kl. 08.58
sigyn giver 10 point for svar | Giv et svar »

linieskift og ordeling funktion i access 2003

Oprettet den 1. september 2010 kl. 17.34
hnto giver 200 point for svar | Giv et svar »

Seneste guides

100% højde med CSS i alle browsere
XML
2 Ting du skal holde øje med





Tips & Tricks fra PC World

Teaser billede

Sådan udspionerer du Google

Søgegiganten Google ved uhyggeligt meget om dig. Med Google Alarm får du besked, hver gang der sendes oplysninger om dig til Googles servere.


Anmeldelser fra PC World

Teaser billede

Test: Smart GPS-ur til løb og cykelture

Garmins Forerunner 110 er en meget underholdende makker, uanset om du løber, kører mountainbike i skoven eller drøner rundt på rulleskøjter. Vi har testet det GPS-baserede motions-ur.


Seneste blogindlæg

Teaser billede

Kvittering og status

På Eksperten er der 914.000 spørgsmål. Af dem er 162.000 åbne spørgsmål hvor der ikke er et accepteret svar, selvom der ligger forslag til svar på 63.000 af dem. Mange af dem ligger mange år...


Nyheder fra PC World

Teaser billede

Samsung udfordrer iPad med toptunet Android-tablet

Syv tommer skærm, Googles mobile styresystem og en vægt på 380 gram. Samsung har afsløret detaljerne om Galaxy Tab, der er sydkoreanernes bud på en konkurrent til Apples iPad. Mød tablet-pc'en...


Nyheder fra Computerworld

Teaser billede

Her er de farligste job i teknologi-verdenen

Du risikerer både liv og helbred, hvis du arbejder med disse job i teknologisektoren.



Kurser
Samarbejdspartnere

Udgiver · © 2010 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301