Avatar billede nythjem Nybegynder
19. oktober 2004 - 18:42 Der er 11 kommentarer og
1 løsning

Multi kode generator?

Hej Alle!

Nu har jeg siddet og kløjset med mit problem i over 1½ minut :)

Jeg har et side, hvor hvor indtaster:

- Navn
- Antal

Jeg vil nu genere X (bestemmes af Antal) antal koder, og lagre dem én efter én i min database. Med andre ord 1 kode pr. record.

Men før hver kode bliver lagt i databasen skal hver kode kontrolles, om der findes en dublikat. Hvis der gør skal det ikke bruges.

Hvis et kodeord ikke eksisterer i databasen skal det lægges ind. Hvis der i feltet Antal er blevet indtastet 10 skal der så ligges 10 koder + Feltet navn (Hvilket er det samme altid) ind.

Min database: database.mdb
Min tabel: Validering
Mit kodefelt: FeltV
Mit navnefelt: Forhandler


Er der ikke nogle, der har et script, der gør det, eller en konkret ide til det i kodeform? :)
Avatar billede mortency Nybegynder
19. oktober 2004 - 18:45 #1
Smid din kode... Så kan vi ta derifra.
Avatar billede nythjem Nybegynder
19. oktober 2004 - 18:49 #2
Hej Morten :)

Jah, der er jo nok en kende fejl :)

<%
' HER GENERERER VI EN KODE PÅ 20 KARAKTERER
' *************************************************

Function lavPassword(antal)
  tilladtkarakter = "1234567890"
  str = ""
  randomize
  for i = 1 to antal
    index = Int(rnd * len(tilladtkarakter))+1
    str = str & Mid(tilladtkarakter,index,1)
  next
  lavPassword = str
end function

KODEN = lavPassword(20)

' HER FINDER VI UD AF, OM DET EKSISTERER?
' ***************************************

Response.Buffer = True

Set Con = Server.CreateObject("ADODB.Connection")
DBPath = "DBQ=" & server.mappath("../../database/database.mdb")
Con.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & DBPath

SQL = "Select * From Validering WHERE FeltV = '" & KODEN & "'"
Set Record =  Con.Execute(Sql)

KodeOK = False

Do Until KodeOk

If Record.BOF And Record.EOF Then

kodeOK = true

End If

Loop

Con.Close
Set Con = Nothing

' HVIS KODEN IKKE EKSISTERER?
' ***************************

If kodeOK = True Then

Response.Write "Koden er OK " & NOGLE

Else

Response.Write "Koden er ikke ok"

End If
%>
Avatar billede jesper2003 Nybegynder
19. oktober 2004 - 19:02 #3
Du kan starte med at ændre

DBPath = "DBQ=" & server.mappath("../../database/database.mdb")

Til

DBPath = "DBQ=" & server.mappath("../database/database.mdb")
Avatar billede nythjem Nybegynder
19. oktober 2004 - 19:07 #4
Hej Jesper.

Så er min mappath jo ikke korrekt?
Avatar billede jesper2003 Nybegynder
19. oktober 2004 - 19:17 #5
Prøv med utesttet

<%
' HER GENERERER VI EN KODE PÅ 20 KARAKTERER
' *************************************************

Function lavPassword(antal)
  tilladtkarakter = "1234567890"
  str = ""
  randomize
  for i = 1 to antal
    index = Int(rnd * len(tilladtkarakter))+1
    str = str & Mid(tilladtkarakter,index,1)
  next
  lavPassword = str
end function

KODEN = lavPassword(20)

' HER FINDER VI UD AF, OM DET EKSISTERER?
' ***************************************

Response.Buffer = True

Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath ("../../database/database.mdb")
Conn.Open DSN
SQL = "Select * From Validering WHERE FeltV = '" & KODEN & "'"
Set Record =  Con.Execute(Sql)

KodeOK = False

Do Until KodeOk

If Record.BOF And Record.EOF Then

kodeOK = true

End If

Loop

Con.Close
Set Con = Nothing

' HVIS KODEN IKKE EKSISTERER?
' ***************************

If kodeOK = True Then

Response.Write "Koden er OK " & NOGLE

Else

Response.Write "Koden er ikke ok"

End If
%>
Avatar billede jesper2003 Nybegynder
19. oktober 2004 - 19:18 #6
Ups mener den er utestet
Avatar billede nythjem Nybegynder
19. oktober 2004 - 19:24 #7
Jesper, nu ved jeg godt, at det er af god mening, men læs evt. lige spørgsmålet.. :)
Avatar billede jesper2003 Nybegynder
19. oktober 2004 - 19:26 #8
Ups synes bare der stod der var fejl i koden. Sider vidst og sover....
Avatar billede nythjem Nybegynder
19. oktober 2004 - 19:29 #9
Det står der >også<..
Avatar billede eagleeye Praktikant
19. oktober 2004 - 21:59 #10
Du kan gøre sådan her så:

<%
' HER GENERERER VI EN KODE PÅ 20 KARAKTERER
' *************************************************

Function lavPassword(antal)
  tilladtkarakter = "1234567890"
  str = ""
  randomize
  for i = 1 to antal
    index = Int(rnd * len(tilladtkarakter))+1
    str = str & Mid(tilladtkarakter,index,1)
  next
  lavPassword = str
end function

Set Con = Server.CreateObject("ADODB.Connection")
DBPath = "DBQ=" & server.mappath("../../database/database.mdb")
Con.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & DBPath

antal = int(Request.From("antal"))
navn = Request.Form("navn")

do while antal>0
  KODEN = lavPassword(20)

  ' HER FINDER VI UD AF, OM DET EKSISTERER?
  ' ***************************************

  SQL = "Select * From Validering WHERE FeltV = '" & KODEN & "'"
  Set Record =  Con.Execute(Sql)
  if Record.EOF then
    SQL = "insert into Validering (navn, FeltV) values ('" & navn & "', '" & KODEN & "')"
    Con.Execute(sql)
    antal=antal-1
  end if
loop

Con.Close
Set Con = Nothing

Response.Write "Koderne er oprettet"
%>
Avatar billede nythjem Nybegynder
21. oktober 2004 - 12:42 #11
Ihh, hvor irriterende, jeg havde slet ikke fået nogen e-mail om svar!

Tak for hjælpen Eagleeye!

Du må meget gerne ligge et svar :)
Avatar billede eagleeye Praktikant
21. oktober 2004 - 16:59 #12
Ok her er et svar :)
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
Kurser inden for grundlæggende programmering

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