webForumDet fria alternativet
Logga in / Bli medlem

varför 0

Databaser & SQL

19 svar · 351 visningar · startad av icaaq

Medlem sedan okt. 20005 273 inlägg
Trådstart#1

Jag har denna:

[red]
strGetId = "INSERT INTO t_getID(f_tabell)VALUES('"&strSerieNamn&"')"
ObjConn.Execute(strGetId)
Set ObjRS = ObjConn.Execute("Select last_insert_id()")
intLastId = ObjRS(0)
[/red]

Det blir en insert i t_getID men när jag ska hämta det senaste insatta ID´t så får jag noll(0) varför??

Mvh icaaq

Medlem sedan apr. 20003 174 inlägg
#2

Kanske dum fråga.. :OO ..men har du auto_increment i kolumnen?

Medlem sedan okt. 20005 273 inlägg
#3

Jo det var en dum fråga.....men jag svara jepp på den

Medlem sedan apr. 20003 174 inlägg
#4

Förstog det.. hehe. ;)

Vad kör du med för OPTION i din connectionstring?
Testa med: OPTION=16386;

Medlem sedan okt. 20005 273 inlägg
#5

jag har 16834 nu

Medlem sedan juni 20015 009 inlägg
#6

Har du satt Primary key på id?

Medlem sedan apr. 20003 174 inlägg
#7

MyODBC readme.win skrev:

ADO: 2+16384 (Return matching rows + Change BIGINT to INT)

Du kanske ska testa att byta till option 16386. :)

Medlem sedan okt. 20005 273 inlägg
#8

Jag får det inte att funka......så här ser det ut nu

[red]
strGetId = "INSERT INTO t_getID(f_tabell)VALUES('"&strSerieNamn&"')"
Set Objconn = Server.CreateObject("ADODB.Connection") 
Objconn.ConnectionString = "Provider=MySQLProv;Data Source=x;User Id=x;Password=x; Driver={mySQL};Server=217.78.33.147;Option=16386;Database=x"
Objconn.open
'Response.Write strGetId
ObjConn.Execute(strGetId)
Set ObjRS = ObjConn.Execute("Select last_insert_id() FROM t_getid")
intLastId = ObjRS(0)
[/red]
Medlem sedan okt. 20005 273 inlägg
#9

Om jag skriver detta i mySQL-Front

[red]
INSERT INTO t_getID(f_tabell)VALUES('icaaq');Select last_insert_id()[/red]

så får jag ut det senaste id:et

Medlem sedan apr. 20003 174 inlägg
#10

icaaq skrev:

ObjConn.Execute("Select last_insert_id() FROM t_getid")

Du ska inte ha med tabell-namnet i din sql-sats utan bara

[red]ObjConn.Execute("Select last_insert_id()")[/red]

Jag har också sett exempel på att man kan använd:

[red]SELECT id FROM tbl WHERE id = last_insert_id()[/red]

..men detta är dock inget som jag har testat själv.

Medlem sedan okt. 20005 273 inlägg
#11

JAg har nu testat alla sorters förslag.....men allt bara resulterar i 0

Jag använder mig av mySQL 4.0.12

KAnske det kan hjälpa mig??

Medlem sedan apr. 20003 174 inlägg
#12

Synd att inte Aleborg är online, han hade ett liknande problem en gång vet jag.. hade,
om jag inte minns helt fel, med OPTION att göra.. Men jag hittar baske mig inte hans mail. :(

Har du läst i manualen så allt stämmer med datatyperna?
http://www.mysql.com/doc/en/Miscellaneous_functions.html

Medlem sedan juni 20022 599 inlägg
#13

Bara för att öka förvirringen kan jag tala om att det är tvärtom hos mig: Om jag kör frågorna rakt mot MySQL så får jag alltid 0 och om jag kör dem via ADO:n så funkar det (MySQL 3.23.54/ADO2.6).

Men vad är det för märklig connectionstring du kör med? Det är ju en blandning mellan OLEDB och ODBC! Har du provat att välja endera?

"Driver={mySQL};Server=mySrvName;Option=16834;Database=mydatabase;"

Förslagsvis till att börja med.

Medlem sedan okt. 20005 273 inlägg
#14

niko skrev:

Bara för att öka förvirringen kan jag tala om att det är tvärtom hos mig: Om jag kör frågorna rakt mot MySQL så får jag alltid 0 och om jag kör dem via ADO:n så funkar det (MySQL 3.23.54/ADO2.6).

Men vad är det för märklig connectionstring du kör med? Det är ju en blandning mellan OLEDB och ODBC! Har du provat att välja endera?

"Driver={mySQL};Server=mySrvName;Option=16834;Database=mydatabase;"

Förslagsvis till att börja med.

hur ska den se ut tycker du ?

Medlem sedan juni 20022 599 inlägg
#15

Tja, eftersom du inleder med "Provider=MySQLProv.." så skulle jag tippa att du kör på MyOLEDB och att den ignorerar de felaktiga MyODBC-parametrarna. Prova alltså att ange en ODBC-koppling ungefär som ovan. (Ifall MyOLEDB är buggig.)

Medlem sedan okt. 20005 273 inlägg
#16

opps såg inte att du redigerade

Medlem sedan apr. 20003 174 inlägg
#17

Jag kör med

[red]Connect.Open "Driver={mySQL};Server=xxx;Option=16386;Database=xxx;Uid=xxx;Pwd=xxx"[/red]

[r] Skum formatering det blir på koden, har den alltid varit så??

 

Medlem sedan okt. 20005 273 inlägg
#18

weeeee med den så funkar det

Medlem sedan apr. 20003 174 inlägg
#19

Gutt mos! :bire

Medlem sedan juni 20022 599 inlägg
#20

Verkar alltså som om MyOLEDB är buggig. Så här står det i manualen (MyOLEDB 3.0):

LAST_INSERT_ID([expr])
Returns the last automatically generated value that was inserted into an AUTO_INCREMENT column.

270 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
143 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)