Sorry - Jeg skal vist forklare mig lidt bedre. Sidste siffer angiver sidste karrakter i resultatet: Dvs for "Post1" er antal lig 2 dvs resultatet bliver Post1-1, Post1-2 og for "Post2" er antal lig 3 dvs resultatet bliver Post2-1, Post2-2, Post2-3 "Antal" definerer antallet af varianter af "ID" Osv betyder at jeg ikke gad at skrive de resterende værdier: Post3-3, Post3-4, Post3-5
Det nemmeste er , hvis du først laver en forespørgsel, hvor du vælger Antal og derefter laver en ny forespørgsel, hvor du vælger ID fra tabellen og Antal fra den første forespørgsel
Opret en tabel kaldet "Resultat" med kun én kolonne, som også skal hedde "Resultat".
Herefter puttes nedenstående kode i et modul (kan afprøves ved at trykke F5, når markøren står i proceduren):
Public Sub Demo() Dim rsPoster As ADODB.Recordset Dim rsResultat As ADODB.Recordset Dim n As Long
Set rsPoster = New ADODB.Recordset Set rsResultat = New ADODB.Recordset
rsPoster.Open "Poster", CurrentProject.Connection, adOpenStatic rsResultat.Open "Resultat", CurrentProject.Connection, adOpenKeyset, adLockOptimistic Do Until rsPoster.EOF For n = 1 To rsPoster!Antal rsResultat.AddNew rsResultat!Resultat = rsPoster!ID & "-" & n rsResultat.Update Next n rsPoster.MoveNext Loop rsPoster.Close rsResultat.Close End Sub
Private Sub Command0_Click() Dim rst As ADODB.Recordset Dim i As Integer Dim cnt As Integer Set rst = New ADODB.Recordset rst.Open "Select * From Poster", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
If Not rst.EOF Then DoCmd.SetWarnings False For i = 1 To rst.RecordCount
Terry-> I see your idea, but....What happens, if you - accidentally - run your code twice? Or if new records are added to "Poster", so you have to run it again later on? I think it is better to put it in another table, don't you agree?
I NEVER "accidently" run my code twice Thomas, I may do it on purpose though :o)
I must say that it all depends on what batting wants to do with the result. If it is because he intended to have all records in the first table then this is a way to solve this! Just delete the code once its done the first time and no accidents will happen :o) If he needs it for other purposes and will be re-using it then I think you need an extra line of code in your example Thomas.
Jeg er selvfølgelig enig - "Accidently" var også et forkert ord, men det kunne jo være, at resulatet ikke var helt som Batting ønskede. Med dit forslag har man bare ikke mulighed for et "second try". Det var bare det, som jeg ønskede at kommentere :o)
Du må heller ikke tage det personligt, at jeg ofte kommentere dine og andres forslag. Jeg ser det blot som en form for 'træning' at forsøge at gennemskue konsekvenserne af en stump kode. Dine forslag vil nok især blive gennemlæst, men det er kun fordi du jo er 'mesteren' (ifølge pointtavlen ;o) og derfor er det jo lidt sjovere, hvis man kan finde en lille fejl i ny og næ :o)
Thomas>I dont take it personal so dont worry, make all the comments you want. We and others can learn from ALL (almost) the input which comes. When I give an answer I have more than likely other ideas too, for example I had thought of doing EXACTLY what was asked for which your answer does. But I couldnt give the same answer as you so decided to be different. How else am I supposed to get points to keep my position as "mesteren" (ifølge pointtavlen ;o)
Tak for deltagelsen, jeg er desvære arbejdsramt lige nu. sidder på en mac og tegner. En lille kommentar til "depends on what batting wants to do with the result" "ID" er en fysiskplacering af en post på et spejderløb. Tallet angiver mandskabs behovet. Det jeg vil generere er en liste af unikke titler der relaterer til placering og antal. Jeg skal således have muligheden for at ændre på begge værdier. Så terrys eksempel går ikke - jeg skal ikke overskrive de oprindelige værdier. Thomas> Jeg er ny bruger access og prøver dit forslag i aften - foreløbig tak
Hej thomas - Jeg er 10 sek fra at kaste point til dig. Dog har jeg et lille problem. Jeg taster værdier ind for de forskellige poster... og kører komadoen. Resultatet er perfekt at er oprettet i tabellen og klar til brug. Dog finder jeg på at øge antallet i af posterne. Så kører jeg komandoen igen og nu har jeg de gamle records og de nye i samme tabel. hvis jeg så sætter talbellen op som ønsket, med Resultat som unik titel "No Duplicates" så giver komadoen en runtime err. pga duplicate values ! Hvad gør jeg nu !
Du skal sørge for at tømme tabellen inden du kører proceduren.
Public Sub Demo() Dim rsPoster As ADODB.Recordset Dim rsResultat As ADODB.Recordset Dim n As Long
Set rsPoster = New ADODB.Recordset Set rsResultat = New ADODB.Recordset
docmd.Setwarnings false docmd.RunSQL "Delete From Resultat" docmd.Setwarnings true
rsPoster.Open "Poster", CurrentProject.Connection, adOpenStatic rsResultat.Open "Resultat", CurrentProject.Connection, adOpenKeyset, adLockOptimistic Do Until rsPoster.EOF For n = 1 To rsPoster!Antal rsResultat.AddNew rsResultat!Resultat = rsPoster!ID & "-" & n rsResultat.Update Next n rsPoster.MoveNext Loop rsPoster.Close rsResultat.Close End Sub
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.