Avatar billede sla03 Nybegynder
14. februar 2003 - 15:42 Der er 13 kommentarer

Indlæsning af forespørgsel i et array

Problemstilling:
Jeg skal have lavet en funktion, som kan tjekke om 11-timersreglen er overholdt. I tabellen TURNUS er der gemt oplysninger omkring hvornår arbejdsdagene afvikles:

UGE    DAG    START    SLUT
1    1    07:00    14:00
1    2    07:00    14:00
1    5    07:00    14:00
2    2    12:00    21:00
2    3    04:00    09:00
OSV…..

Jeg forestiller mig af posterne læses ind i et array via en forespørgsel, hvor posterne sorteres efter UGE, DAG og START. Herefter jeg tjekker om der minimum 11 timer mellem sluttidspunktet i række ”n” og starttidspunktet i række ”n+1”. (i den sidste række sammenlignes SLUT med START i første række)
Avatar billede arne_v Ekspert
14. februar 2003 - 16:25 #1
Hvorfor ikke noget i stil med:

SELECT passende_vb_funktion(TURNUS1.SLUT,TURNUS2.START) FROM
TURNUS AS TURNUS1, TURNUS AS TURNUS2 WHERE TURNUS1.UGE=TURNUS2.UGE
AND (TURNUS1.DAG+1)=TURNUS2.DAG;

?
Avatar billede sla03 Nybegynder
14. februar 2003 - 16:33 #2
Det er ikke forespørgslen der volder mig problemer, men det at få data fra forespørgslen via et recordset over i et array, hvor jeg herefter kan bruge data i en række beregninger!!
Avatar billede arne_v Ekspert
14. februar 2003 - 16:38 #3
Du vil altså have at vide hvordan du i VB:
  - erklærer et antal arrays
  - åbner et recordset med en simpel SELECT * FROM tabel
  - laver en løkke der så længe der er data læser
    fra record over i arrays
?
Avatar billede sla03 Nybegynder
14. februar 2003 - 16:40 #4
Jeg tror faktisk at du har forklaret mit problem bedere en jeg selv kunne have gjort!!!
Avatar billede arne_v Ekspert
14. februar 2003 - 17:52 #5
Lad mig prøve igen:

Dim a(10) As Integer
Dim b(10) As Integer
Dim ix As Integer
Dim rs as RecordSet
Set rs = CurrentDb.OpenRecordset("SELECT * FROM tabel")
ix = 0
While Not rs.EOF
  a(ix) = rs!a
  b(ix) = rs!b
  ix = ix + 1
  rs.MoveNext
Wend

vil hente to integer felter a og b over i et array.
Avatar billede arne_v Ekspert
14. februar 2003 - 17:52 #6
NB: Indtastet efter hukommelse, så check for syntax bøffer.
Avatar billede sla03 Nybegynder
14. februar 2003 - 21:02 #7
Jeg har lavet tabellen "tabel" men før desværre fejlen "type mismatch" i denne linie:

Set rs = CurrentDb.OpenRecordset("SELECT * FROM tabel")
Avatar billede arne_v Ekspert
14. februar 2003 - 21:58 #8
Det prøvede lige at lave et lille eksempel.

Og jeg får samme fejl.

Jeg kan imidelrtid komme ud over den ved at udkommentere
erklæringen af rs, altså:
'Dim rs as RecordSet

Men jeg forstår det ikke helt, da OpenRecordSet jo burde
returnere et RecordSet.
Avatar billede arne_v Ekspert
14. februar 2003 - 22:02 #9
Ha - vi er ikke de enste med problemet.

Se http://support.microsoft.com/default.aspx?scid=KB;en-us;q181542 !
Avatar billede arne_v Ekspert
14. februar 2003 - 22:05 #10
Og hvis jeg ændrede det til:
Dim rs As DAO.Recordset
og gik ind i "Tools" "References" og satte kryds i DAO 3.6, så
virker det også !
Avatar billede nih Novice
15. februar 2003 - 22:14 #11
Du kan putte din foresp. ind i et Array vha. getrows()

Function ArrayFunction() As Date

Dim mitArray As Variant
Dim i As Integer, j As Integer
Dim rs As New ADODB.Recordset

rs.Open "select * From tabel1", CurrentProject.Connection

mitArray = rs.GetRows()

For j = 0 To UBound(mitArray, 2)
  Debug.Print "Ny post"
  For i = 0 To UBound(mitArray, 1)
    Debug.Print mitArray(i, j)
  Next i
Next j

End Function

Niels
Avatar billede nih Novice
15. februar 2003 - 22:18 #12
den der 'AS date' er en ikke nødvendig ;0)
Avatar billede arne_v Ekspert
26. februar 2003 - 22:55 #13
sla03>

Har du fået et svar du kunne bruge ?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester