24. maj 2012 - 15:05Der er
12 kommentarer og 1 løsning
Hvordan får jeg mit recordset læst ind i et array?
Jeg har en sql til en access db som retunere mig et recordset rst, men hvordan får jeg læst mit recordset ind i et array?
---------------------------------------- Dim con As New ADODB.Connection Dim rst As New ADODB.Recordset With rst Src = "SELECT [NIIDSNo] & ' ' & [name] AS NiidsName......
rst.Open Src, con, adOpenForwardOnly, adLockReadOnly End With
iTal = 0 Do While Not rst.EOF iTal = iTal + 1 xArray(iTal) = ?????????? rst.MoveNext Loop
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
drop dit -------- iTal = 0 Do While Not rst.EOF iTal = iTal + 1 xArray(iTal) = ?????????? rst.MoveNext Loop -------- brug dette: -------- if rst.eof then rst.close response.write "Intet fundet." else arr=rst.getrows() rst.close antal=ubound(arr,2) ' behandl de enkelte linjer i et loop for i = 0 to antal response.write arr(0,i) 'det første felt i sql-sætningen response.write "<br>" response.write arr(1,i) 'det andet felt i sql-sætningen response.write "<hr>" next end if
mit var til udtræk til en hjemmeside - men den andet kan da tilrettes. Hvilket felt (nummer i rækkefølgen i udtrækket) skal du have i combo. før loop skal du tømme combo for evt gamle data ComboBox1.Clear og i loop er det så for i = 0 to antal ComboBox1.Add arr(0,i) 'det første felt i sql-sætningen next
Blander mig lige med min løsningsmåde i tillæg til de udmærkede svar.
For at isolere sig fra, i forskellige kodestumper, VBA's lavnivea indeks gymnastik, er det bekvemt med en 'put i array' subrutine:
Sub add2list(V, i) On Error Resume Next ReDim Preserve V(UBound(V) + 1) If err.Number = 13 Then ReDim V(0) If IsObject(i) Then Set V(UBound(V)) = i Else V(UBound(V)) = i End Sub
Det anvendes således, idet jeg kun fokusere på array tildelingen.
dim arr with rsi(<sql>): while not .eof add2list arr,!fldname wend: end with
Man kan putte hvad som helst i arrayet - også andre arrays og objekter.
Med forkærlighed for generelle løsninger, ud over hvad spørgsmålet går på: Skulle man have den ambition at det resulterende array skal være 'flat', at tilsætning af arrays der potentielt indeholder arrays og så videre i recursiv forstand, skal bliver til et array der ikke indeholder arrays, løser følgende subrutine det:
'add simple types to list Sub addS2list(V, i) Dim ai On Error Resume Next If IsArray(i) Then For Each ai In i addS2list V, ai: Next Else ReDim Preserve V(UBound(V) + 1) If err.Number = 13 Then ReDim V(0) If IsObject(i) Then Set V(UBound(V)) = i Else V(UBound(V)) = i End If End Sub
Hej Claes57 Så er den i skabet...... takker. Hvordan er det nu med point hvordan får jeg givet dig dem? mangler en "guk" box med "svar" i dit indlæg
--- If rst.EOF Then rst.Close Choice_UserForm.ComboBox2.AddItem "Error in connection" Else recArray = rst.GetRows() ' Behandl de enkelte linjer i et loop For i = 0 To UBound(recArray, 2) ' Det første felt i sql-sætningen Choice_UserForm.ComboBox2.AddItem recArray(0, i) Next End If --------
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.