Avatar billede ahjdp1 Nybegynder
05. december 2001 - 13:58 Der er 18 kommentarer og
1 løsning

Ordrenummer

Jeg skal bruge et script der kan generere et unikt nummer (ordrenummer).

Skriv hvis du skal bruge kildekoden!
Avatar billede Slettet bruger
05. december 2001 - 13:59 #1
Det bliver aldrig helt unikt medmindre du bruger en DB med autoinkrement.

Accidents do happen!
Avatar billede ahjdp1 Nybegynder
05. december 2001 - 14:00 #2
Kan man lave scriptet med en DB?
Avatar billede egede Nybegynder
05. december 2001 - 14:03 #3
Skal det være tal og bogstaver?
Avatar billede keysersoze Ekspert
05. december 2001 - 14:04 #4
du kan ikke \"lave scriptet med en DB\" men du skal have en database med ind over for at holde styr på hvilke ordrenumre der er taget... du kan fx køre med et autonummeringsfelt - men databasen slipper du ikke for
Avatar billede nute Nybegynder
05. december 2001 - 14:05 #5
styr deg litt med de poengene...

den peneste måten er å benytte en database hvor du har en kolonne med autoincrement...alle andre løsninger blir bøvlete...
Avatar billede ahjdp1 Nybegynder
05. december 2001 - 14:09 #6
Det skal bare være tal (eks. 1, 2, 3, 4 osv.)

Det gør ikke noget det er i en database, der er bare for statistikken?
Avatar billede hirtshals Nybegynder
05. december 2001 - 14:13 #7
Function GetQuarter()

Randomize
Dim RandomNum, UpperBound, LowerBound
LowerBound = 1
UpperBound = 100
RandomNum = Int((UpperBound - LowerBound + 1) * Rnd + LowerBound)


  UniqeID = DatePart(\"Year\", now()) & DatePart(\"m\", now()) & DatePart(\"d\", now()) & DatePart(\"h\", now()) & DatePart(\"n\", now()) & DatePart(\"S\", now()) & RandomNum
End Function
Avatar billede ahjdp1 Nybegynder
05. december 2001 - 14:15 #8
Hvordan sættes dette script ind. Jeg er ikke så ekstrem til asp - stadig nybegynder!
Avatar billede hirtshals Nybegynder
05. december 2001 - 14:16 #9
Forklaring - Først vælger du et tilfældig tal imellem 1 - 100

så bygger du en streng op med dags dato - incl klokkeslet -

2001125141459

så er der et nyt unique tal for hvert sekund - ikke så stor sandsynlighed for 2 der er ens - men for at sikre os lægger vi randdom tallet til i dette eksempel fra 1 -100

feks 76

200112514145976

Dvs er der to brugere der henter variablen i samme sekund er der 1 procent chance for uniqe id bliver ens -

er det ikke nok laver du bare din random funktions variabler om til

LowerBound = 1
UpperBound = 100000

Avatar billede ahjdp1 Nybegynder
05. december 2001 - 14:18 #10
Tusind tak, men hvordan ser det ud i kode når man skal sætte det ind i ens dokument?
Avatar billede hirtshals Nybegynder
05. december 2001 - 14:19 #11
En kodestump ville være OK - men jeg prøver at forklare uden

Hvis nu du vil gemme uniq id i en Server variabel går du bare således

min_variabel = DatePart(\"Year\", now()) & DatePart(\"m\", now()) & DatePart(\"d\", now()) & DatePart(\"h\", now()) & DatePart(\"n\", now()) & DatePart(\"S\", now()) & RandomNum

Skal det gemmes i en Database gøres det således

rs.addnew
rs(\"UnikID\") = min_variabel
rs.update
Avatar billede ahjdp1 Nybegynder
05. december 2001 - 14:20 #12
Kan du ikke lave et helt eksempel til mig?
Avatar billede hirtshals Nybegynder
05. december 2001 - 14:27 #13
Dette gemmer i en Database

Set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open = \"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\"&Server.MapPath(\"DinDatabase.mdb\")

Set rs = Server.CreateObject(\"ADODB.Recordset\")

    rs.open \"DitTabelnavn\", Conn, adOpenDynamic, adLockOptimistic, adCmdTable

rs.addnew
rs(\"UnikID\") = min_variabel
rs.update

rs.close
Conn.Close

set rs = Nothing
set Conn = Nothing

Ovenstående eksempel gemmer det unikke tal i en database
Avatar billede hirtshals Nybegynder
05. december 2001 - 14:30 #14
Hvis du starter med en side der hedder start.asp

på den laver du et link

<a href=\"gemtal.asp\">Gem Tal</a>

Så laver du en gemtal.asp

med ovenstående kode tilføjet en enkel linje

Set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open = \"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\"&Server.MapPath(\"DinDatabase.mdb\")

Set rs = Server.CreateObject(\"ADODB.Recordset\")

    rs.open \"DitTabelnavn\", Conn, adOpenDynamic, adLockOptimistic, adCmdTable

rs.addnew
rs(\"UnikID\") = min_variabel
rs.update

rs.close
Conn.Close

set rs = Nothing
set Conn = Nothing

response.redirect(\"start.asp\")

Det der sker nu er at hvergang du trykker på Gem tal linket på Start.asp gemmes der et tal i din databasen - og dernæst sendes du tilbafe til start siden

Præv det en 10 gange - og kig så i din database

Avatar billede ahjdp1 Nybegynder
05. december 2001 - 14:35 #15
Den skriver at der er fejl i linie 23

Det er den linie der starter med rs(\"UnikID\") = min_variabel

Min kode ser således ud:

<%
Set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open = \"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\"&Server.MapPath(\"items.mdb\")

Set rs = Server.CreateObject(\"ADODB.Recordset\")

    rs.open \"ordrer\", Conn, adOpenDynamic, adLockOptimistic, adCmdTable

min_variabel = DatePart(\"Year\", now()) & DatePart(\"m\", now()) & DatePart(\"d\", now()) & DatePart(\"h\", now()) & DatePart(\"n\", now()) & DatePart(\"S\", now()) & RandomNum

rs.addnew
rs(\"id\") = min_variabel
rs.update

rs.close
Conn.Close

set rs = Nothing
set Conn = Nothing
%>

Og hvordan får jeg den til at skrive nummeret?
Avatar billede hirtshals Nybegynder
05. december 2001 - 14:40 #16
Jeg laver lige et eksempel
Avatar billede hirtshals Nybegynder
05. december 2001 - 14:53 #17
Her har du et eksempel der virker

<!-- #include file=\"Adovbs.inc\" -->
<%


Dim RandomNum
Randomize
    RandomNum = Int(Rnd * 100) + 1


min_variabel = DatePart(\"YYYY\", now()) & DatePart(\"m\", now()) & DatePart(\"d\", now()) & DatePart(\"h\", now()) & DatePart(\"n\", now()) & DatePart(\"S\", now()) & RandomNum



Set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open = \"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\"&Server.MapPath(\"items.mdb\")

Set rs = Server.CreateObject(\"ADODB.Recordset\")
rs.open \"ordrer\", Conn, adOpenDynamic, adLockOptimistic, adCmdTable


rs.addnew
rs(\"id\") = min_variabel
rs.update

rs.close
Conn.Close

set rs = Nothing
set Conn = Nothing

Response.Write min_variabel
%>


Der gemmes vha af filen adovbs - derfor skal den placeres i samme bibliotek som din website

Har du ikke filen adovbs.inc fra Microsoft mailer jeg den gerne til dig - bare oplys dit mail nr.

Gem ovenstående kode i en side feks demo.asp

Jeg lavede en kopi af din database - kaldte den items.mdb

Lavede en tabel med navnet ordrer - med feltet id af typen tekst
Avatar billede hirtshals Nybegynder
05. december 2001 - 14:55 #18
Det er vigtigt af felttypen er tekst i din database - da tallet er for højt som nummer i access - jeg fik feks lige tallet

20011251457781
Avatar billede hirtshals Nybegynder
05. december 2001 - 16:12 #19
Hvis du mangler eksempler på hvordan man sletter, opretter, ændrer i en database så kig på disse skoleeksempler

http://www.viewsource.dk/aspcat.asp?ident=2

Dbshowrecord
Dbnewrecord
Dbeditrecord
Dbdeleterecord

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