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

dane022
dane022 (13.580 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

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 (13.580 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

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 (13.580 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

'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 (13.580 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 (13.580 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

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 (13.580 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

Bilags nr?

Oprettet den 3. februar 2012 kl. 21.19
chino2990 giver 30 point for svar | Giv et svar »

Forbindelse til oracle

Oprettet den 3. februar 2012 kl. 16.48
larsgrau giver 100 point for svar | Giv et svar »

SQL - definer kolonner.

Oprettet den 3. februar 2012 kl. 09.49
stof giver 30 point for svar | Giv et svar »

Seneste guides

Den gode bruger
Adgang til NAS-server via WAN
Kollektion af Batch tutorials (FJERNET)
Tilpas din YouTube afspiller


   




Tips & Tricks fra PC World

Teaser billede

Sådan fjerner du pladskrævende metadata fra dine fotos

Det er langt fra altid, at dine billeders metadata såsom kameramodel og geografisk placering er vigtige at bevare. JPG & PNG Stripper kan luge ud i billedfilerne, så de fylder meget mindre....


Anmeldelser fra PC World

Teaser billede

Test: Superlet bærbar med mange muligheder

Toshiba har med Satellite Z830 skabt en af verdens letteste ultrabooks. Den vejer 1,1 kilo, og computeren på 13 tommer ser på papiret ud til at være en oplagt rejsekammerat. Men den lave vægt har...


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Samsung Galaxy S III på vej

Samsungs bedst sælgende smartphone nogensinde får en efterfølger om kort tid.


Nyheder fra Computerworld

Teaser billede

Apple retter hele 51 sikkerhedshuller i Mac OS X

Apple lukker hele 51 sårbarheder i Mac OS X, hvoraf de fleste er kritiske. Se her, hvor hullerne er.


Kurser
Samarbejdspartnere

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