29. september 2005 - 13:18Der er
13 kommentarer og 1 løsning
Variabel kolonne i recordset
Hej Eksperter, Håber jeg kan få et hint til at løse nedenstående problem:
Jeg vil sammenligne data fra de sidste to rækker i en tabel. Tabelkolonnerne i Tabellen recordsættet er baseret på har jeg navngivet 1 til 30 for at kunne lave en do løkke. Jeg er dog stødt ind i et problem med at hente de specifikke poster fået fra to recordsæt på den samme tabel. Nedenfor er problemet markeret med "******"
Har en af jer en ide til hvordan man kan ændre kolonnen i et recordsæt dynamisk?
Jeg har prøvet med: Do Until versionskolonne = 30 versionskolonne = versionskolonne + 1 Set RSV1 = New Recordset strSQL1 = "SELECT * FROM VersionTbl WHERE " & "[Produkt] ='" & RS![Produktnavn] & " '" _ & "and" & " [Version1] =" & V1 - 2 RSV1.Open strSQL1, CN, adOpenKeyset, adLockOptimistic, adCmdText
Set RSV2 = New Recordset strSQL1 = "SELECT * FROM SDSVersionTbl WHERE " & "[Produkt] ='" & RS![Produktnavn] & " '" _ & "and" & " [Version1] =" & V1 - 1 RSV2.Open strSQL1, CN, adOpenKeyset, adLockOptimistic, adCmdText **** Her kommer problemet****
If RSV1![(versionskolonne)] <> RSV2![(versionskolonne)] Then
*****************************' MsgBox versionskolonne End If RSV1.Close Set RSV1 = Nothing RSV2.Close Set RSV2 = Nothing Loop
Sorry for the mistake. I wanted to make the code more simple by deleting some of the name. It should have been from VersionTbl for both the recordset. I am sellecting the table twice as I am compairing the last two versions ie two records of a dataset.
I just need to make hte selection of a column in the dataset dynamic - as I have tried to in the above code between the *'s Does that make the problem clear?
You should open the recordset before the loop and close it after the loop. An dif you want to move to the last two records do that before the loop also.
Jeg vil gerne finde de kolonner hvor værdierne i en kolonne er forskellige. I eksemplet her vil jeg gerne have Column1 udvalgt. I analogi med ovenstående kunne jeg forestille mig at bruge If RSV1![ (column&(versionskolonne))] <> RSV2![(column&(versionskolonne))] Then
Det er ikke de sidste to records men de sidste to records af med et bestemt produkt. Men det har jeg grejet.
Hej Terry min db fylder 60 MB komprimeret kode og tabeller. Jeg værdsætter dit tilbud, men da min dB er meget komplex tror jeg ikke du får meget ud af den - dette skønt jeg ved du er ekspert. Problemet er at jeg er nybegynder og hr ingen orden i dB'en. Bare den sub som ovenstående er en del af fylder 1800 linier.
Såfremt det ikke umiddelbart er muligt at kalde et felt fra et recordset RS.[1] til RS.[10] med en dymamisk varabel:
do until variabel = 10 RS.(variabel) loop
finder jeg en anden løsning.
Men mange tak for den tid du brugte på det. dine rs.movelast and rs.moveprevious hjalp mig meget med et andet probem jeg har.
Hej Terry, Jeg fandt ud af det. Jeg brugte: Do Until versionskolonne = 4 versionskolonne = versionskolonne + 1
a = "v" & versionskolonne If RSV1.Fields(a).Value = RSV2.Fields(a).Value Then MsgBox RSV1.Fields(a).Value End If Loop Jeg fandt udtrykket med RS.Fields("felt").value et andet sted på eksperten. Undskyld ulejligheden og tak for den tid du brugte.
VH Jind
Synes godt om
Ny brugerNybegynder
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.