Avatar billede juks Novice
04. december 2000 - 14:48 Der er 7 kommentarer og
1 løsning

Test om værdien eksitere i tabellen

Jeg ville gerne teste om denne værdi jeg laver eksitere i forvejen , i min
tabel \"  !TA_Key , KeyID\"  og hvis den gør så prøv at gennere en ny og bliv ved indtil den laver en værdi der ikke findes i forvjen.
hvordan gør man det. ???


Private Sub Kommandoknap0_Click()
Dim MyValue

Dim db As Database
Dim rsSet As Recordset

MyValue = Int((1000000 * Rnd) + 1)    \' Frembring en tilfældig værdi mellem
1 og 1000000.
Debug.Print MyValue
Set db = CurrentDb()
Set rsSet = db.OpenRecordset(\"TA_Key\")


rsSet.AddNew
rsSet(\"KeyID\") = MyValue
rsSet.Update

End Sub
Avatar billede powell Nybegynder
04. december 2000 - 15:01 #1
Jeg ville lave en hurtig rutine der gjorde sådan her:

Dim Flag as booleon

Flag = 0

rsSet.Movefirst \'hopper til den første position
if rsset.eof and rsset.bof then
  rsset.addnew
  rsset!keyid = NULL
  rsset.Update
end if
Do Until Flag = 1
    if rsSet!KeyID = MyValue then
        MyValue = Int((1000000 * Rnd) + 1)\'Frembring en tilfældig værdi mellem
        1 og 1000000.
        \'Debug.Print MyValue
        Set db = CurrentDb()
        Set rsSet = db.OpenRecordset(\"TA_Key\")
    end if
    if rsSet.eof then flag = 1
    rsSet.movenext
loop
rsSet.movelast
rsSet.AddNew
rsSet!KeyID = MyValue
rsSet.Update
Avatar billede juks Novice
04. december 2000 - 16:01 #2
Den virker ikke
Avatar billede powell Nybegynder
04. december 2000 - 16:11 #3
Nej det har du ret i...
Jeg beskriver min hendsigt istedet for, så kan det være du selv kan klare ærterne.

1. Der skulle jeg oprette alle dimentioneringerne, her glemte jeg alle dine.
2. Tjekkede jeg når jeg såd på plads nummer et, i tabellen om det var en ny tabel, hvis ja skulle den udfylde første felt med NULL, det vil gå galt hvis du ikke tager højde i din tabel for denne værdi.
3. Hoppede til starten af tabelen.
4. Ville køre rutinen til Flag = 1
5. Så sammenlignede den variablem MyValue med værdien der står i tabelen KeyID, er de ens skulle den generere et nyt tal, her glemte jeg også at tabellen skulle startes forfra.
6. Hvis tabelen kunne løbes igennem uden at ramme ind i et tal der eksisterede (hvis den ramte et tal der eksisterede ville den jo starte forfra)ville den sætte flaget = 1
7. Her skulle igen være en if sætning, som hed er flag ikke et så hop til næste pkt. i tabelen.
8. Kommer ud af løkken fordi flag blev sat til at være 1, så skulle tallet gemmes i tabelen.
Avatar billede juks Novice
04. december 2000 - 16:22 #4
Den skriver at with-blokken ikke er angivet
Avatar billede powell Nybegynder
04. december 2000 - 16:24 #5
Du har jo ingen with-blok!?!
Avatar billede juks Novice
04. december 2000 - 16:27 #6
nej netop. men det skal den vel bruge eller
Avatar billede powell Nybegynder
04. december 2000 - 16:34 #7
Her er lidt kode til det jeg skrev herover, prøv at sætte de manglende faktorer ind, og se om det hjælper.

\'2.
If rsSet.bof and rsSet.eof then
  rsSet.AddNew
  rsSet!KeyId = \"0\"
  rsSet.Update
End If
\'Generer MyValue
\'4.
Do Until Flag = True \'Kører løkken til flag er sandt
    \'Sammenligner tabbelens værdi med din MyValue
    \'5.
    If rsSet!KeyID = MyValue then
    \'Genere en ny værdi
    rsSet.Movefirst
    End If
    \'6.
    If rsSet.EOF then Flag = True
    \'7.
    If Flag = False then rsSet.MoveNext
Loop
\'Gem den nye værdi i tabellen.
Avatar billede juks Novice
04. januar 2001 - 15:10 #8
tak for hjælpen det er lang tid siden og jeg kan ikke huske om du løste problemet , men tak alligevel her er dine point
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