andreas_lindhMedlem sedan jan. 20011 091 inlägg
Har lite problem med en insert.
Jag försöker få fram id:t på den inlagda posten men får det inte att fungera.
sub add_cup(obj as object, e as eventargs)
dim strsql as string ="insert into cuper(namn,antal_lag,antal_grupper,antal_dagar, matcher_per_lag,tid_mellan_matcher,start_tid,start_dag) values ('" + tbnamn.text + "'," + tbantallag.text + "," + antalgrupper.selecteditem.text + "," + tbantaldagar.text + "," + tbantalmatcher.text + "," + tbtidmellanmatcher.text + ",'" + tbstarttid.text + "','" + tbstartdag.text + "')"
dim objcmd as new oledbcommand(strsql, objconn)
objcmd.connection.open()
objcmd.executenonquery()
objcmd.connection.close()
dim objcmd1 as new oledbcommand _
("SELECT @@IDENTITY", objconn)
dim dr as oledbDatareader
objconn.open
dr =objcmd1.executereader
Dim id1
while dr.read
id1 = dr.getint32(id)
response.write(id1)
end while
objconn.close
end sub
Det enda som skrivs ut är 0.
PatrikBMedlem sedan mars 20002 713 inlägg
@@IDENTITY hämtar unika id'et för senaste inlägg i db i samma connection, dvs en öppen connection.
ta bort stängningen du gör efter .ExecuteNonQuery() och sedan tar du bort öppningen innan du skapar readern för att hämta senaste id'et så ska du se att det funkar
cya,
PatrikB
PatrikBMedlem sedan mars 20002 713 inlägg
Testa denna kod:
sub add_cup(obj as object, e as eventargs)
dim strsql as string ="insert into cuper(namn,antal_lag,antal_grupper,antal_dagar, matcher_per_lag,tid_mellan_matcher,start_tid,start_dag) values ('" + tbnamn.text + "'," + tbantallag.text + "," + antalgrupper.selecteditem.text + "," + tbantaldagar.text + "," + tbantalmatcher.text + "," + tbtidmellanmatcher.text + ",'" + tbstarttid.text + "','" + tbstartdag.text + "')"
dim objcmd as new oledbcommand(strsql, objconn)
objcmd.connection.open()
objcmd.executenonquery()
dim objcmd1 as new oledbcommand _
("SELECT @@IDENTITY", objconn)
Dim id1 As Integer
dim dr as oledbDatareader = objCmd.ExecuteReader(CommandBehavior.CloseConnection)
while dr.read
id1 = dr.getint32(id)
response.write(id1)
end while
end sub
lite ändringar som du ser .....
cya,
PatrikB
andreas_lindhMedlem sedan jan. 20011 091 inlägg
fungerar inte. Det läggs till en ny post i databasen men id:t skrivs inte ut.
PatrikBMedlem sedan mars 20002 713 inlägg
ok, ändra detta:
while dr.read
id1 = dr.getint32(id)
response.write(id1)
end while
till:
If dr.read() = True Then
id1 = dr("id")
response.write(id1)
end while
obs, du bär inte använda dig av response.write ...... ska den skrivas ut tex i en label så gär du på detta vis:
Label1.Text = dr("ID").ToString()
cya,
PatrikB
andreas_lindhMedlem sedan jan. 20011 091 inlägg
obs, du bär inte använda dig av response.write ...... ska den skrivas ut tex i en label så gär du på detta vis:
Jag använder bara response.write nu när jag testar
andreas_lindhMedlem sedan jan. 20011 091 inlägg
Det fungerar fortfarande inte. Det verkar som om det inte kommer med något värde från @@IDENTITY
PatrikBMedlem sedan mars 20002 713 inlägg
fan så dum man e .... och inte kan man läsa innantill heller
testa detta:
If dr.read() = True Then
id1 = dr(0)
response.write(id1)
end while
då identity inte har ett namn utan man refererar till den med positionen istället och positionen e alltid 0
cya,
PatrikB
andreas_lindhMedlem sedan jan. 20011 091 inlägg
Blir samma resultat. Den skriver bara ut 0
ZyaxMedlem sedan mars 200262 inlägg
Du kanske inte har en primärnyckel i DB? ID finns ju bara om DB vet vilken kolumn...
andreas_lindhMedlem sedan jan. 20011 091 inlägg
Jo jag har en primärnyckel i databasen.
Fältet heter Id och är en räknare som skapar ReplikeringsID
@ndersMedlem sedan juni 200026 914 inlägg
@@IDENTITY fungerar inte med replikerings-id, utan endast vanliga räknare.
Mvh,