Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


@@identity ändrar värde när den ska lägga in flera poster i en tabell med senast

Postades av 2005-11-23 18:50:59 - Björn Berglund, i forum asp.net generellt, Tråden har 9 Kommentarer och lästs av 445 personer

hej alla smarta,

Jag kör Asp.net 1.1 / VB.net / MS Access / Webmatrix och behöver hjälp!!

Se kod:

Dim strSql3 as string = "SELECT * FROM tblNarvarande"
        Dim Dr3 as OLEDBDatareader = datareader_data(strSql3)
        
        '// For-loop som körs för alla rutor. Kollar för varje gång om någon ruta är vald, om den är det så ska ny post skrivas till tblNarvarande
        Dim i as integer
        Const NyttKvall_id as string = "@@identity"
        For i=0 To BoxNarvarande.Items.Count - 1
            If BoxNarvarande.Items(i).Selected Then
            
            'Dim sql4 as string  = "INSERT INTO tblNarvarande(kvall_id,medlem_id) VALUES(" & "@@identity" & "," & boxNarvarande.items(i).value & ")"
            Dim sql4 as string  = "INSERT INTO tblNarvarande(kvall_id,medlem_id) VALUES(" & NyttKvall_id & "," & boxNarvarande.items(i).value & ")"
            'response.Write(sql4)
            '// Command-objekt
            Dim Cmd2 as new OLEDBCommand(sql4, Con)
         
            '// Köra frågan mot databasen
            Cmd2.executeNonQuery()
            End If
         Next
        
         '// Stäng anslutningen
        Con.close()    
            
        '// Förhindra låsning
        Dr2.close()
        Dr3.close()


Jag har problemet att jag inte får @@identity att fortsätta vara senast inlagda post från tblKvall medans posterna från checkboxlisten läggs in i tblNarvarande. När första posten läggs in så fungerar det, men sen när nästa läggs in så har @@identity-posten skrivits över med senast inlagda id från tblNarvarande (istället för från tblKvall). Någon som kan visa hur jag ska göra för att fixa detta?


Tack på förhand!

Någon som har något tips?

//mvh Björn


Svara

Sv: @@identity ändrar värde när den ska lägga in flera poster i en tabell med se

Postades av 2005-11-23 18:53:45 - Mikael Wedham

@@identity visar alltid senasre insertat värde, alltså om du gör en insert mot en ny tabell, så ändrar du på @@identity.

Lagra undan värdet INNAN din insert mot childtabellen.

/micke


Svara

Sv:@@identity ändrar värde när den ska lägga in flera poster i en tabell med se

Postades av 2005-11-23 22:55:23 - Björn Berglund

Hej Mikael,

Tack för svaret. Jag är nog ganska införstådd på detta. Men hur gör jag det? Försökte på lite olika sätt men vet inte hur jag skriva koden riktigt...

//mvh Björn


Svara

Sv: @@identity ändrar värde när den ska lägga in flera poster i en tabell med se

Postades av 2005-11-24 01:35:35 - Andreas Hillqvist

"SELECT @@identity"


Svara

Sv:@@identity ändrar värde när den ska lägga in flera poster i en tabell med se

Postades av 2005-11-24 08:21:00 - Björn Berglund

Hej igen,

Menar du så här:


Dim strSql3 as string = "SELECT * FROM tblNarvarande"
        Dim Dr3 as OLEDBDatareader = datareader_data(strSql3)
        
        '// For-loop som körs för alla rutor. Kollar för varje gång om någon ruta är vald, om den är det så ska ny post skrivas till tblNarvarande
        Dim i as integer
        Dim NyttKvall_id as string = "SELECT @@identity"
        For i=0 To BoxNarvarande.Items.Count - 1
            If BoxNarvarande.Items(i).Selected Then
            
            'Dim sql4 as string  = "INSERT INTO tblNarvarande(kvall_id,medlem_id) VALUES(" & "@@identity" & "," & boxNarvarande.items(i).value & ")"
            Dim sql4 as string  = "INSERT INTO tblNarvarande(kvall_id,medlem_id) VALUES(" & NyttKvall_id & "," & boxNarvarande.items(i).value & ")"
            'response.Write(sql4)
            '// Command-objekt
            Dim Cmd2 as new OLEDBCommand(sql4, Con)
         
            '// Köra frågan mot databasen
            Cmd2.executeNonQuery()
            End If
         Next
        
         '// Stäng anslutningen
        Con.close()    
            
        '// Förhindra låsning
        Dr2.close()
        Dr3.close()



Eller?

//mvh Björn


Svara

Sv: @@identity ändrar värde när den ska lägga in flera poster i en tabell med se

Postades av 2005-11-24 16:13:55 - Björn Berglund

Någon som kan hjälpa mig?

Hela koden ser ut så här:

<%@ Page Language="VB" Debug="true" ContentType="text/html" ResponseEncoding="iso-8859-1"%>
<!--#include file="inkluderingsfiler/globalt.inc.aspx" -->

<%@ Import Namespace="System.data" %>
<%@ Import Namespace="System.data.oledb" %>
<%@ Import Namespace="system.web.mail" %>

<script language="VB" runat="server">

'***************************************************************************************
' Page_load körs direkt när sidan laddas
'***************************************************************************************
	
sub page_load()
	if isPostBack = false then
	'// sql-sats för att allt från tblMedlem
	Dim sql as string
	sql="SELECT tblMedlem.* FROM tblMedlem ORDER BY fornamn"
	
	'// deklarera dr som ett OLEDBDatareader-objekt. Anropar funktionen datareader_data med 
	'// sql-satsen, funktionen returnerar just ett OLEDBDatareader-objekt.
	Dim Dr as OLEDBDatareader = datareader_data(sql)
	
	'// Bind datan till dropdown-menyn med förnamn
	boxNarvarande.dataSource=Dr
	boxNarvarande.databind()
	
	dr.close()
	
	else
	end if
	
end sub
'***************************************************************************************

'***************************************************************************************
' registrera_klick körs när användaren trycker på Ok-knappen.
'***************************************************************************************

	sub regKvall(sender As Object, e As EventArgs)
		
		'***************************************************************************************
		'Lagra datum, rubrik och brödtext tillsammans med hos vem kvällen var hos i tblKvall
		'***************************************************************************************
	
		Dim Con as new OLEDBConnection(db)
		
		'Metoden open öppnar anslutningen
		Con.open()
		
		Dim strSql2 as string = "SELECT * FROM tblKvall"
		
		'// Hämta data från databasen med hjälp av funktionen datareader_data
		Dim Dr2 as OLEDBDatareader = datareader_data(strSql2)
		
		'// sql-sats som lägger in textboxarnas värde i en ny post i tblKvall (tillsammans med medlem_id = vem kvällen var hos)
		dim sql as string  = "INSERT INTO tblKvall(datum,rubrik,brodtext,medlem_id) VALUES('" & txtDatum.text & "','" & txtRubrik.text & "','" & txtBrodtext.text & "'," & session("medlem_id") & ")"
		'response.Write(sql)
		
		'// Command-objekt
		dim Cmd as new OLEDBCommand(sql, Con)
	 	
		'// Köra frågan mot databasen
		Cmd.executeNonQuery()
		
		'***************************************************************************************
		'Hämta hem allt från tblNarvarande
		'***************************************************************************************
		Dim strSql3 as string = "SELECT * FROM tblNarvarande"
		Dim Dr3 as OLEDBDatareader = datareader_data(strSql3)
		'***************************************************************************************
		
		'***************************************************************************************
		'For-loop som körs för alla rutor. Om ruta är vald så ska ny post skrivas till tblNarvarande
		'*************************************************************************************** 
		Dim i as integer
		'Const NyttKvall_id as string = "@@identity"
		
		For i=0 To BoxNarvarande.Items.Count - 1
            If BoxNarvarande.Items(i).Selected Then
				Dim sql4 as string  = "INSERT INTO tblNarvarande(kvall_id,medlem_id) VALUES(" & "@@identity" & "," & boxNarvarande.items(i).value & ")"
				'response.Write(sql4)
				'// Command-objekt
				Dim Cmd2 as new OLEDBCommand(sql4, Con)
	 	
				'// Köra frågan mot databasen
				Cmd2.executeNonQuery()
            End If
         Next
		
	 	'// Stäng anslutningen
		Con.close()	
			
		'// Förhindra låsning
		Dr2.close()
		Dr3.close()
		
		'response.Redirect("create3.aspx")

	end sub
	
'***************************************************************************************

'***************************************************************************************
'Funktion för att hämta data från databasen
'***************************************************************************************
		'Anropas så här:	
		'				Dim Dr as OLEDBDatareader
		'				Dr = datareader_data("sql-satsen här")
		function datareader_data(sql as String) as OLEDBDatareader			
			'// Deklarera och öppna anslutning
			Dim Con as new OLEDBConnection(db)
			Con.open()
		
			'// Hämta info från databasen med hjälp av sql-satsen och anslutnings-objektet
			Dim Cmd as New OLEDBCommand(sql,Con)
		
			'// Skapa en datareader att lägga information i
			Dim Dr as OLEDBDatareader
	
			'// Knyt info från command-objekt till vår datareader
			Dr = Cmd.executeReader(Commandbehavior.closeConnection)	
			
			'// Returnera datareader
			return Dr
			
			'// stäng anslutningen
			con.close()
			
			'// stäng datareadern
			dr.close()
		end function
			
'***************************************************************************************


Tack på förhand,

//mvh Björn


Svara

Sv:@@identity ändrar värde när den ska lägga in flera poster i en tabell med se

Postades av 2005-11-24 22:16:42 - Björn Berglund

Hej,

Kan du förklara lite tydligare? Var ska jag skriva detta?

Tack på förhand,

//mvh Björn


Svara

Sv: @@identity ändrar värde när den ska lägga in flera poster i en tabell med se

Postades av 2005-11-25 08:56:04 - Mikael Wedham

deklarera variabel

öppna connection

kör din insert mot mastertabellen

skapa ett kommando som kör "SELECT @@identity"

variabeln = command.executescalar()

Kör dina inserts mot childtabellen - skicka in VARIABELN som foreign key kolumn.


/micke


Svara

Sv:@@identity ändrar värde när den ska lägga in flera poster i en tabell med se

Postades av 2005-11-27 19:47:49 - Björn Berglund

Hej Mikael,

Stort tack för din hjälp. Nu funkar det äntligen! :-)

Bifogar kod på hur det ser ut när det fungerar. Är denna metod felsäker nu? Jag menar om det sitter två stycken och lägger in kvällar samtidigt, det är ingen risk att knytningarna blir fel? Så att t ex kille nr 1s senaste inlagda post hämtas in som @@identity för kille nr 2?

Tack,

//mvh Björn


<%@ Page Language="VB" Debug="true" ContentType="text/html" ResponseEncoding="iso-8859-1"%>
<!--#include file="inkluderingsfiler/globalt.inc.aspx" -->

<%@ Import Namespace="System.data" %>
<%@ Import Namespace="System.data.oledb" %>
<%@ Import Namespace="system.web.mail" %>

<script language="VB" runat="server">

'***************************************************************************************
' Page_load körs direkt när sidan laddas
'***************************************************************************************
	
sub page_load()
	'// kolla så att är inloggad, om inte redirect till logon.aspx
	Dim medlem_id as integer = Session("medlem_id")
	if medlem_id <=0 then response.redirect("logon.aspx")

	if isPostBack = false then
	'// sql-sats för att allt från tblMedlem
	Dim sql as string
	sql="SELECT tblMedlem.* FROM tblMedlem ORDER BY fornamn"
	
	'// deklarera dr som ett OLEDBDatareader-objekt. Anropar funktionen datareader_data med 
	'// sql-satsen, funktionen returnerar just ett OLEDBDatareader-objekt.
	Dim Dr as OLEDBDatareader = datareader_data(sql)
	
	'// Bind datan till dropdown-menyn med förnamn
	boxNarvarande.dataSource=Dr
	boxNarvarande.databind()
	
	dr.close()
	
	else
	end if
	
end sub
'***************************************************************************************

'***************************************************************************************
' registrera_klick körs när användaren trycker på Ok-knappen.
'***************************************************************************************

	sub regKvall(sender As Object, e As EventArgs)
		
		'***************************************************************************************
		'Lagra datum, rubrik och brödtext tillsammans med hos vem kvällen var hos i tblKvall
		'***************************************************************************************
		Dim NyttKvallid as string
		Dim Con as new OLEDBConnection(db)
		
		'Metoden open öppnar anslutningen
		Con.open()
		
		Dim strSql2 as string = "SELECT * FROM tblKvall"
		
		'// Hämta data från databasen med hjälp av funktionen datareader_data
		Dim Dr2 as OLEDBDatareader = datareader_data(strSql2)
		
		'// sql-sats som lägger in textboxarnas värde i en ny post i tblKvall (tillsammans med medlem_id = vem kvällen var hos)
		dim sql as string  = "INSERT INTO tblKvall(datum,rubrik,brodtext,medlem_id) VALUES('" & txtDatum.text & "','" & txtRubrik.text & "','" & txtBrodtext.text & "'," & session("medlem_id") & ")"
		'response.Write(sql)
		
		'// Command-objekt
		dim Cmd as new OLEDBCommand(sql, Con)
	 		
		'// Köra frågan mot databasen
		Cmd.executeNonQuery()
		
		cmd.commandtext = "SELECT @@identity"
		NyttKvallid = convert.ToInt32(Cmd.ExecuteScalar())
		
		'***************************************************************************************
		'Hämta hem allt från tblNarvarande
		'***************************************************************************************
		Dim strSql3 as string = "SELECT * FROM tblNarvarande"
		Dim Dr3 as OLEDBDatareader = datareader_data(strSql3)
		'***************************************************************************************
		
		'***************************************************************************************
		'For-loop som körs för alla rutor. Om ruta är vald så ska ny post skrivas till tblNarvarande
		'*************************************************************************************** 
		Dim i as integer
		
		
		For i=0 To BoxNarvarande.Items.Count - 1
            If BoxNarvarande.Items(i).Selected Then
				'Dim NyttKvall_id as string = "@@identity"
				Dim sql4 as string  = "INSERT INTO tblNarvarande(kvall_id,medlem_id) VALUES(" & NyttKvallid & "," & boxNarvarande.items(i).value & ")"
				'response.Write(sql4)
				'// Command-objekt
				Dim Cmd2 as new OLEDBCommand(sql4, Con)
	 	
				'// Köra frågan mot databasen
				Cmd2.executeNonQuery()
            End If
         Next
		
	 	'// Stäng anslutningen
		Con.close()	
			
		'// Förhindra låsning
		Dr2.close()
		Dr3.close()
		
		'response.Redirect("create3.aspx")

	end sub
	
'***************************************************************************************

'***************************************************************************************
'Funktion för att hämta data från databasen
'***************************************************************************************
		'Anropas så här:	
		'				Dim Dr as OLEDBDatareader
		'				Dr = datareader_data("sql-satsen här")
		function datareader_data(sql as String) as OLEDBDatareader			
			'// Deklarera och öppna anslutning
			Dim Con as new OLEDBConnection(db)
			Con.open()
		
			'// Hämta info från databasen med hjälp av sql-satsen och anslutnings-objektet
			Dim Cmd as New OLEDBCommand(sql,Con)
		
			'// Skapa en datareader att lägga information i
			Dim Dr as OLEDBDatareader
	
			'// Knyt info från command-objekt till vår datareader
			Dr = Cmd.executeReader(Commandbehavior.closeConnection)	
			
			'// Returnera datareader
			return Dr
			
			'// stäng anslutningen
			con.close()
			
			'// stäng datareadern
			dr.close()
		end function
			
'***************************************************************************************





Svara

Sv: @@identity ändrar värde när den ska lägga in flera poster i en tabell med se

Postades av 2005-11-28 14:46:38 - Mikael Wedham

Nej!

@@identity gäller för din connection, så du kan ha 1000 andra (eller 2) som jobbar - och du har kvar "din" identity så länge du är ansluten.

/micke


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 606
27 953
271 705
487
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies