Avatar billede jacand Nybegynder
28. juli 2005 - 15:20 Der er 11 kommentarer og
2 løsninger

Problem efter flyt til MYSQL

Jeg har flyttet min database til en MYSQL server og er i den forbindelse løbet ind i nogle problemer, så er blevet løst hen ad vejen.

Jeg har dog et jeg ikke lige selv kan finde en let løsning på:

På min MSSQL fik jeg id ud på denne kode:

Set rs = Server.CreateObject("ADODB.RecordSet")
SQL = "SELECT * FROM tabel where (id = 0)
rs.Open SQL, strDSN, 1, 3
rs.addnew
rs(“dato”) = date
rs.update
id = rs(“id”)
rs.close
set rs = nothing
response.write id

Men på min MYSQL server er id bare tom, når jeg bruger samme kode.
Kan MYSQL ikke hive id ud lige efter den har oprettet i databasen, eller hvad er der galt her?
Avatar billede fennec Nybegynder
28. juli 2005 - 15:25 #1
Bliver der overhoved oprettet en ny række???
Avatar billede jacand Nybegynder
28. juli 2005 - 15:29 #2
ja den opretter fint nok, problemet er at jeg skal bruge id længere nede i min kode, og det virker jo ikke rigtigt når id er tom, jeg har også prøvet:
id = rs(“id”)
rs("id2") = id
rs.update
og den giver bare null i id2
Avatar billede fennec Nybegynder
28. juli 2005 - 15:45 #3
Jeg ville også tro det virkede, men så skal du nok have lavet det helt om.

conn.execute("insert into tabel(dato) values('"& date &"')")
set rs = conn.execute("select @@IDENTITY")

sådan henter man id'et ud med MySQL. Det ligger så i rs(0) eller du kan bruge "select @@IDENTITY as EtNavn" hvor det så ligger i rs("etNavn").

Du skal nok have formateret "date", men hvis det bare er den aktuelle dato kan du bruge MySQL's funktion:

conn.execute("insert into tabel(dato) values(CURDATE())")
set rs = conn.execute("select @@IDENTITY")
Avatar billede fennec Nybegynder
28. juli 2005 - 15:47 #4
metoden kræver at du har oprette et connections objekt:

Set Conn = Server.CreateObject("ADODB.Connection")
oConn.Open "Database streng..."
Avatar billede jacand Nybegynder
28. juli 2005 - 15:59 #5
Hvad sker der så hvis går ind på siden samtidig?
altså:
bruger1: conn.execute("insert into tabel(dato) values('"& date &"')")
bruger2: conn.execute("insert into tabel(dato) values('"& date &"')")
bruger1: set rs = conn.execute("select @@IDENTITY")
bruger2: set rs = conn.execute("select @@IDENTITY")
får bruger2 så ikke bruger1 id?
Avatar billede fennec Nybegynder
28. juli 2005 - 16:16 #6
Nej, systemet ved hvilket id du skal have fat på gennem connections objekt. Sålænge du ikke overskriver connections objekt eller laver en ny indsættelse, får du det rigtige id.
Avatar billede jacand Nybegynder
28. juli 2005 - 21:12 #7
Jeg løb lige ind i et nyt problem :-)

Set rs3 = Server.CreateObject("ADODB.RecordSet")
Sql = "Select " & rs4("kategori") & " as hkategori from heste where id = " & rs("hestnr")
response.write sql
rs3.Open SQL, strDSN, 1, 3
rs3("hkategori") = rs("klassenavnnr")
rs3.update
rs3.close

virkede i MSSQL men ikke i MYSQL
det en skal gøre er at opdatere en kolonde og navnet på kolonen ligger i rs4("kategori")
Avatar billede nielle Nybegynder
28. juli 2005 - 21:37 #8
Brug denne SQL i stedet:

SQL = "UPDATE heste SET " & rs4("kategori") & " = '" & rs("klassenavnnr") & "' WHERE id = " & rs("hestnr")
Avatar billede jacand Nybegynder
28. juli 2005 - 21:44 #9
Det virker :-)

Tak for hjælpen
Avatar billede jacand Nybegynder
28. juli 2005 - 21:45 #10
fennec> smider du lige et svar din løsning kunne jeg også bruge.
Avatar billede nielle Nybegynder
28. juli 2005 - 21:52 #11
Gætter på at du også gerne vil have et svar fra mig?

... svar :^)
Avatar billede fennec Nybegynder
29. juli 2005 - 08:09 #12
.o) <-- One Eyed Jack
Avatar billede jacand Nybegynder
29. juli 2005 - 10:14 #13
nielle> Ja sorry :-)
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