webForumDet fria alternativet

problem med Insert

11 svar · 310 visningar · startad av andreas_lindh

andreas_lindhMedlem sedan jan. 20011 091 inlägg
#1

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
#2

@@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
#3

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
#4

fungerar inte. Det läggs till en ny post i databasen men id:t skrivs inte ut.

PatrikBMedlem sedan mars 20002 713 inlägg
#5

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
#6

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
#7

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
#8

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
#9

Blir samma resultat. Den skriver bara ut 0

ZyaxMedlem sedan mars 200262 inlägg
#10

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
#11

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
#12

@@IDENTITY fungerar inte med replikerings-id, utan endast vanliga räknare.

Mvh,

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