Avatar billede fluii Nybegynder
16. juni 2003 - 18:10 Der er 18 kommentarer og
2 løsninger

id = 0,1,2,3,4,6

Jeg har en database, hvor den første ID er nødtil at være 0
Dette er nemt nok:
Man opretter den første, og ændrer 1 til 0
Man opretter så selv den næste, for at tvinge den til at være 1 (og ikke 2, som den ellers ville)

Når jeg så via asp vil oprette en ny, så får den rigtig nok id = 2 osv...

Men hvis jeg går ind og sletter en tabel, f.eks. 5, så vil den næste gang oprette 6 efter 4..

Kan man på en eller anden måde få den selv til at finde ud af, at den skal tage det næste nummer, også selvom man manuelt har slettet en..?
Avatar billede -master-d- Nybegynder
16. juni 2003 - 18:14 #1
Du kan jo lave et tjek på om rækken fem eksisterer. Og hvis den ikke gør så opretter du den.
Avatar billede angam Nybegynder
16. juni 2003 - 18:14 #2
Ja; istedet for at oprette dit Id som INTEGER, så opret det som
INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY

Uha .. det var større omgang, men nu er dit felt en Integer, som ikke kan være nul, og som automatisk skal tælles op. Derudover er det primary key (=det er indexeret - opslag går hurtigere).
Avatar billede angam Nybegynder
16. juni 2003 - 18:15 #3
... læser lige den anden kommentar der kom 3 sek. før min. Er der noget jeg har misforstået i opgaven? :-)
Avatar billede -master-d- Nybegynder
16. juni 2003 - 18:18 #4
Men når du nu har et felt kan han vel bare lave sin insert således :

Set rs = Conn.Execute("Select Max(id) AS MaxID From Tabelnavn")
id = MaxID + 1
Conn.Execute("Insert into tabelnavn(id) values(" & id &")")
Avatar billede -master-d- Nybegynder
16. juni 2003 - 18:18 #5
Eller er jeg helt forkert på den ?
Avatar billede fluii Nybegynder
16. juni 2003 - 18:48 #6
Den første ID skal være 0

Prøver -master-d- forslag..
Avatar billede fluii Nybegynder
16. juni 2003 - 18:59 #7
Kan i lige forklare hvordan jeg får en dato ind i tabellen..

Lige nu bruger jeg nemlig 2xConn.Execute:

  .... strSQL = strSQL & "'" & info & "') "
  Conn.Execute(strSQL)

  strSQL = "Update tabelnavn SET dato = now() where name ='" & name & "'"
  Conn.Execute(strSQL)

Det virker nemlig ikke med bare at sætte now() ind i den første
Avatar billede -master-d- Nybegynder
16. juni 2003 - 19:02 #8
strSQL = "Update tabelnavn SET dato = '" & now() &"' where name ='" & name & "'"
  Conn.Execute(strSQL)

Sådan der.
Avatar billede fluii Nybegynder
16. juni 2003 - 19:09 #9
.. Det jeg skrev virker fint, men jeg vil have den med i den første Conn.execute

Der virker denne ikke:
....strSQL = strSQL & "'" & now() & "', "
    strSQL = strSQL & "'" & info & "') "
Avatar billede -master-d- Nybegynder
16. juni 2003 - 19:13 #10
Så skal jeg nok se resten af strSQL.
Avatar billede fluii Nybegynder
16. juni 2003 - 19:13 #11
Kan ikke få denne til at virke....

Set rs = Conn.Execute("Select Max(id) AS MaxID From billeder")

MaxID bliver bare ""

..Skal skal bare finde den sidste id-værdi
Avatar billede fluii Nybegynder
16. juni 2003 - 19:16 #12
now()-problemet:

  strConnection = "driver={MySQL};server=localhost;uid=***;"
  strConnection = strConnection & "pwd=***;database=***"
  Set Conn = Server.CreateObject("ADODB.Connection")
  Conn.Open strConnection

  strSQL = "Insert into billeder (ip, name, titel, size, nick, dato) VALUES ("
  strSQL = strSQL & "'" & ipadr & "', "
  strSQL = strSQL & "'" & name & "', "
  strSQL = strSQL & "'" & titel & "', "
  strSQL = strSQL & "'" & size & "', "
  strSQL = strSQL & "'" & nick & "', "
  strSQL = strSQL & "'" & info & "') "
  Conn.Execute(strSQL)

  strSQL = "Update billeder SET dato = now() where name ='" & name & "'"
  Conn.Execute(strSQL)

Conn.Close
Set Conn = Nothing

....

Sådan ser den ud lige nu.... men hvis jeg ligger now() op i den første Conn.Execute(strSQL), så virker det ikke
Avatar billede -master-d- Nybegynder
16. juni 2003 - 19:30 #13
Prøv lige :

  strSQL = "Insert into billeder (ip, name, titel, size, nick, dato) VALUES ("
  strSQL = strSQL & "'" & ipadr & "', "
  strSQL = strSQL & "'" & name & "', "
  strSQL = strSQL & "'" & titel & "', "
  strSQL = strSQL & "'" & size & "', "
  strSQL = strSQL & "'" & nick & "', "
  strSQL = strSQL & "'" & CDate(now) & "') "
  Conn.Execute(strSQL)
Avatar billede fluii Nybegynder
16. juni 2003 - 19:42 #14
Det virker ikke... den sætter bare 0000-00-00 00:00:00 ind

.. har også prøvet med strSQL = strSQL & "'" & CDate(now()) & "') "
Avatar billede -master-d- Nybegynder
16. juni 2003 - 20:44 #15
Hvad så med ...

dato = now

  strSQL = "Insert into billeder (ip, name, titel, size, nick, dato) VALUES ("
  strSQL = strSQL & "'" & ipadr & "', "
  strSQL = strSQL & "'" & name & "', "
  strSQL = strSQL & "'" & titel & "', "
  strSQL = strSQL & "'" & size & "', "
  strSQL = strSQL & "'" & nick & "', "
  strSQL = strSQL & "'" & dato & "') "
  Conn.Execute(strSQL)
Avatar billede fluii Nybegynder
16. juni 2003 - 21:30 #16
nope... dato bliver en masse tegn..
Avatar billede -master-d- Nybegynder
16. juni 2003 - 21:58 #17
hmmm... Det lyder da yderst besynderligt. Har du prøvet at sætte <%Session.LCId=1030%> øverst i dokumentet.
Avatar billede fluii Nybegynder
16. juni 2003 - 22:19 #18
Det er den ja

og det virker også når jeg bruger
strSQL = "Update billeder SET dato = now() where name ='" & name & "'"
  Conn.Execute(strSQL)
bagefter.

Men det kunne da være rart nok, hvis det kunne klares i første hug
Avatar billede -master-d- Nybegynder
16. juni 2003 - 22:22 #19
Det kan jeg ikke forstå...
Avatar billede netro Nybegynder
29. juni 2003 - 13:18 #20
Prøv engang (hvis det stadig er relevant):

Session.LCID = 1030

dato = Year(Date) & "-" & Month(Date) & "-" Day(Date) & " " & FormatDateTime(Now, vbLongTime)

  strSQL = "Insert into billeder (ip, name, titel, size, nick, dato) VALUES ("
  strSQL = strSQL & "'" & ipadr & "', "
  strSQL = strSQL & "'" & name & "', "
  strSQL = strSQL & "'" & titel & "', "
  strSQL = strSQL & "'" & size & "', "
  strSQL = strSQL & "'" & nick & "', "
  strSQL = strSQL & "'" & dato & "') "
  Conn.Execute(strSQL)
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
Computerworld tilbyder specialiserede kurser i database-management

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