webForumDet fria alternativet

varför 0

19 svar · 351 visningar · startad av icaaq

icaaqMedlem sedan okt. 20004 910 inlägg
#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

PalleMedlem sedan apr. 20002 716 inlägg
#2

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

icaaqMedlem sedan okt. 20004 910 inlägg
#3

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

PalleMedlem sedan apr. 20002 716 inlägg
#4

Förstog det.. hehe. ;)

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

icaaqMedlem sedan okt. 20004 910 inlägg
#5

jag har 16834 nu

QimenMedlem sedan juni 20013 568 inlägg
#6

Har du satt Primary key på id?

PalleMedlem sedan apr. 20002 716 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. :)

icaaqMedlem sedan okt. 20004 910 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]
icaaqMedlem sedan okt. 20004 910 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

PalleMedlem sedan apr. 20002 716 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.

icaaqMedlem sedan okt. 20004 910 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??

PalleMedlem sedan apr. 20002 716 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

nikoMedlem sedan juni 20022 415 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.

icaaqMedlem sedan okt. 20004 910 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 ?

nikoMedlem sedan juni 20022 415 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.)

icaaqMedlem sedan okt. 20004 910 inlägg
#16

opps såg inte att du redigerade

PalleMedlem sedan apr. 20002 716 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å??

 

icaaqMedlem sedan okt. 20004 910 inlägg
#18

weeeee med den så funkar det

PalleMedlem sedan apr. 20002 716 inlägg
#19

Gutt mos! :bire

nikoMedlem sedan juni 20022 415 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.

Genererad på 377 ms · cache AV · v20260730165559-full.f96bc7eb