Gå til innhold

Anbefalte innlegg

Sitter å programmerer litt i VB.NET her, og skal sette inn en del verdier i en Access database. Det er 3 aktuelle tabeller, kunde, ordre og artikkel. En kunde kan ha mange ordre, og en ordre kan ha mange artikler. Kundeid (primærnøkkelen i kunde-tabellen) er autonummer, så SQLen som blir kjørt for å sette inn i denne tabellen blir bare :

INSERT INTO kunde(navn,kontaktperson,addresse, postnummer,telefont)

VALUES (bla,bla,bla,bla,bla);

 

Problemet mitt blir da at jeg må ha tak i kundeiden når jeg skal sette inn en ordre. Hvordan får jeg tak i den? Er ikke alltid jeg kan velge max(kundeid) siden kunden kan eksistere fra før av. Så hva vil den mest effektive måten å finne fram denne?

 

På forhånd takk.

Lenke til kommentar
Videoannonse
Annonse

Nå er vel faktisk ikke stored procedures noe annet enn at man kan ferdigdefinere sql statements. Det i seg selv gjør ikke at jeg kan få tak i kundeiden. Nå er det likevel gunstig å bruke på mange måter, så jeg har valgt å gjøre om til bruk av dette.

 

Det jeg foreløpig har funnet ut, er "SELECT @@IDENTITY" skal returnere siste autoinkrement, men hos meg returnerer den bare 0 hele tiden...noen som vet hvorfor?

Lenke til kommentar

Jo det er mulig å returnere id-en ved bruk av stored procedures.

Create a stored procedure to perform the INSERT and return the @@IDENTITY

value as an output parameter, as detailed in the .NET Framework

Documentation, in the page "Retrieving Identity or Autonumber Values".

 

 

evt kan det også gjøres slik uten bruk av stored procedures

 

 

Dim conn As New SqlConnection("Data Source=(local);Integrated
Security=SSPI;Database=test")
conn.Open()

Dim cmd As New SqlCommand("INSERT MyTable VALUES (@Name) SELECT @@IDENTITY",
conn)

cmd.CommandType = CommandType.Text

Dim Par As SqlParameter

Par = cmd.Parameters.Add("@Name", SqlDbType.VarChar)

Par.Value = "Jones"

Dim rdr As SqlDataReader

rdr = cmd.ExecuteReader()

rdr.Read()

Console.WriteLine(rdr(0).ToString())

rdr.Close()

conn.Close()

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...