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

dane022
dane022 (10.145 point)

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 (2.260 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 (10.145 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 (2.260 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 (10.145 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 (2.260 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 (10.145 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 (10.145 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 (2.260 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 (10.145 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

Konvertere måneder i tal til tekst

Oprettet den 14. marts 2010 kl. 11.39
mohnsen giver 30 point for svar | Giv et svar »

Vælge mellem datoer

Oprettet den 14. marts 2010 kl. 01.13
hlt giver 30 point for svar | Giv et svar »

Konverteringsproblem fra 2007 til 2003

Oprettet den 12. marts 2010 kl. 15.28
Lotte3 giver 60 point for svar | Giv et svar »

Seneste guides

Logging i Java
Prepared Statements
Parameters





Tips & Tricks fra PC World

Teaser billede

Hold nallerne fra min Windows!

Hvis du lader andre bruge din pc, er det en god idé ikke at give dem adgang til de administrative funktioner i Windows 7. Se her hvordan du får dem til at holde nallerne væk.


Anmeldelser fra PC World

Teaser billede

Test: Fin Blu-ray-afspiller til under 1.000 kroner

Er du træt af grovkornede udsendelser på din finkornede HD-skærm? Så skal du have en Blu-ray-afspiller. Og den behøver ikke koste en formue. Vi har testet en billig model.


Seneste blogindlæg

Teaser billede

PHP webudvikler søges

Vil du være med til at forme fremtidens medier, og kan du lide at arbejde selvstændigt? Så har vi jobbet til dig. En af vores dygtige webudviklere har fået nyt job. Derfor søger vi en webudvikler...


Nyheder fra PC World

Teaser billede

Digitalt signal sparker salg af fladskærme gennem loftet

Sidste år blev der solgt 780.000 fladskærms-tv, og det salg er der kun én anden komponent til dagligstuen, der slår. Se topsællerten her.


Nyheder fra Computerworld

Teaser billede

CRM-systemerne rykker ud på nettet - også hos dig?

Et stigende antal CRM-kunder vælger at købe deres løsning som en service over internettet. To CRM-eksperter klæder dig på til at afgøre, om det er det rigtige valg for din virksomhed.



Kurser
Samarbejdspartnere

Udgiver · © 2010 IDG Danmark A/S · Carl Jacobsens Vej 25 · 2500 Valby · Tlf.: 77 300 300 · Fax: 77 300 301