Inserimento contemporaneo su più tabelle

mercoledì 28 settembre 2005 - 16.56

geo Profilo | Newbie

Salve a tutti!

Io vorrei fare pagina dove l'utente compila i vari campi e il contenuto verrà trasmesso ad una banca dati sql server.

Finche si trattava di mandare i dati soltanto su una tabella no problem...invece io devo mandarli su 2 tabelle!

Ho la tabella Persona con attributi: nome cognome ecc e la tabella Indirizzo. Nella tabella persona c'è la chiave esterna della tabella indirizzo. In teoria 2 chiavi esterne (una per indirizzo privato e una per indirizzo dell'ufficio)
Ho fatto in questo modo perche voglio dare la possibilità di registrare l'indirizzo privato e l'indirizzo dell'ufficio di ogni persona.

Io ho scritto questo script .... ma mi resistra solo la tabella persona. qualcuno mi potrebbe aiutare???

Private Sub InserisciDati()
Dim conn As New SqlConnection("XXX")
conn.Open()

Dim trans As SqlTransaction
trans = conn.BeginTransaction()

Dim comm As SqlCommand = New SqlCommand
comm.Connection = conn

Try

comm.CommandText = "INSERT INTO Indirizzo (Via, NAP, Localita, Nazione, Telefono, Natel) VALUES (@via, @nap, @localita, @nazione, @telefono,@natel)"
comm.Parameters.Add("@via", SqlDbType.VarChar).Value = txtViaPr.Text
comm.Parameters.Add("@nap", SqlDbType.VarChar).Value = txtNapPr.Text
comm.Parameters.Add("@localita", SqlDbType.VarChar).Value = txtLocalitaPr.Text
comm.Parameters.Add("@nazione", SqlDbType.VarChar).Value = txtNazionePr.Text
comm.Parameters.Add("@telefono", SqlDbType.VarChar).Value = txtTelefonoPr.Text
comm.Parameters.Add("@natel", SqlDbType.VarChar).Value = txtNatelPr.Text

comm.ExecuteNonQuery()

comm.CommandText = "SELECT @@identity from Indirizzo"

Dim valore As Integer
valore = System.Convert.ToInt32(comm.ExecuteScalar())

comm.CommandText = "INSERT INTO Persona (IDPersona,Intestazione,Nome, Cognome, Societa, Email, IDIndirizzoPr, IDIndirizzoUff) VALUES (@idpersona,@intestazione,@nome, @cognome, @societa, @email,@idindirizzopr,@indirizzouff)"

Dim privato As New SqlParameter("@idindirizzopr", SqlDbType.Int)
Dim ufficio As New SqlParameter("@indirizzouff", SqlDbType.Int)

comm.Parameters.Add(privato)
comm.Parameters.Add(ufficio)
comm.Parameters.Add("@intestazione", SqlDbType.VarChar).Value = txtIntestazione.Text
comm.Parameters.Add("@nome", SqlDbType.VarChar).Value = txtNome.Text
comm.Parameters.Add("@cognome", SqlDbType.VarChar).Value = txtCognome.Text
comm.Parameters.Add("@societa", SqlDbType.VarChar).Value = txtSocieta.Text
comm.Parameters.Add("@email", SqlDbType.VarChar).Value = txtEmail.Text

'Dim item As ListItem
'For Each item In prova.Items
'If item.Selected() Then
privato.Value = valore
ufficio.Value = valore

comm.ExecuteNonQuery()
' End If
'Next

trans.Commit()
prova2.Text = "inserimento effettuato"


Catch ex As SqlException

trans.Rollback()
prova2.Text = ex.Message


Catch exm As SqlException


prova2.Text = exm.Message

Finally


conn.Close()

End Try

End Sub

trinity Profilo | Guru

hai riepito il command.transaction= trans? non mi sembra..

Ciao

Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz

geo Profilo | Newbie

avevi ragione!

adesso funziona. ho messo a posto anche altri errori!

comunque io vorrei provare ad usare stored procedure, soltanto che non l'ho mai fatto.
per esempio in questo caso come potrei fare?

almeno da avere un esempio di base....

grazie

Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5