Jump to content

Fazer insert em varias tabelas


Blackvelvet
 Share

Recommended Posts

Olá pessoal,

mais uma vez venho pedir a vossa preciosa ajuda, á qual eu agradeço desde já.

É o seguinte:

Tenho um bd em SQL, em que contem 23 tabelas, todas relacionadas.

A minha duvida é, como é que eu faço para inserir os parametros nelas todas?

Se fosse uma só tabela eu sei que era "insert into (tabela) [(valor1]) value (@valor1)"

Fiz o insert para cada uma tabela,mas o resultado foi nada vezes nada.

Podem-me dizer como é que faço isso?

Cumprimentos

Link to comment
Share on other sites

CREATE PROCEDURE sp_InsereRegistos (
@Utilizador NVARCHAR(25), 
@NomeRede NVARCHAR(25), 
@Office NVARCHAR(50)--, ECT.
)
AS

BEGIN TRAN

INSERT INTO TabelaOndeGuardaUtilizador (Utilizador) VALUES (@Utilizador)
INSERT INTO TabelaOndeGuardaNomeRede (NomeRede) VALUES (@NomeRede)
INSERT INTO TabelaOndeGuardaOffice (Office) VALUES (@Office)
--ETC.

COMMIT

Pedro Martins

Não respondo a duvidas por PM

Link to comment
Share on other sites

Ora viva mais uma vez....  ?

Ja criei o Stored Procedure no sql

CREATE PROCEDURE Insere_Registos (
@empresa VARCHAR(50),
@nome_rede VARCHAR(100),
@utilizador VARCHAR(100),
@visivel_rede INT ,
@localizacao VARCHAR(50),
@departamento VARCHAR (50),
@sistema_operativo VARCHAR (10),
@user_baan VARCHAR (5),
@user_citrix VARCHAR (10),
@user_internet VARCHAR(5),
@office VARCHAR (10),
@numero_office INT ,
@licenca_office VARCHAR (40),
@dl VARCHAR (5),
@observacao VARCHAR (MAX),
@selo_windows VARCHAR (50),
@autenticacao VARCHAR (10),
@office_audit VARCHAR (20),
@server_cal INT,
@ex_cal INT,
@sql_cal INT,
@foto_seloffice IMAGE,
@foto_selowin IMAGE)

AS

Begin TRAN
insert into empresa values (@empresa )
insert into nome_rede values (@nome_rede )
insert into utilizador values (@utilizador )
insert into visivel_rede values (@visivel_rede )
insert into localizacao values (@localizacao )
insert into departamento values(@departamento )
insert into sistema_operativo values (@sistema_operativo )
insert into user_baan values (@user_baan )
insert into user_citrix values (@user_citrix )
insert into user_internet values (@user_internet )
insert into office values (@office )
insert into numero_office values (@numero_office )
insert into licenca_office values (@licenca_office )
insert into dl values (@dl )
insert into observacao values (@observacao )
insert into selo_windows values (@selo_windows )
insert into autenticacao values (@autenticacao )
insert into office_audit values (@office_audit )
insert into server_cal values (@server_cal )
insert into ex_cal values (@ex_cal )
insert into sql_cal values(@sql_cal )
insert into foto_seloffice values (@foto_seloffice )
insert into foto_selowin values (@foto_selowin )

e no evento do botão tenho o seguinte codigo (parte do codigo)

  ' Try
        ' Texto de ligação à base de dados
        Dim myConnectionString As String = _
         "Data Source=.\SQLEXPRESS; Initial Catalog=GestInf; Integrated Security=SSPI;"
        
        ' Cria uma nova ligação à base de dados
        Dim connection As New SqlConnection(myConnectionString)
        connection.Open()
        ' Comando que irá inserir dados na tabela "GestInformatica"  os campos
        'que são passados através de parâmetros
        Dim command As New SqlCommand("Insere_Registos", connection)
        '' Indicação dos parâmetros que serão inseridos
        command.Connection = connection
        command.CommandText = "Insere_Registos"
        'command.CommandType = CommandType.StoredProcedure

        Dim parameter As SqlParameter

        With parameter
            .ParameterName = "@empresa"
            .SqlDbType = SqlDbType.VarChar
            .Value = cbxEmpresa.Text


            .ParameterName = "@nome_rede"
            .SqlDbType = SqlDbType.Int
            .Value = txtNomeRede.Text
        End With
        With command
            .Parameters.Add(parameter)
            .CommandType = CommandType.StoredProcedure
        End With


        'Executa o comando e guarda em "x" o número de registos inseridos
        Dim x As Integer = command.ExecuteNonQuery()
        If x < 1 Then

        End If
        ' Fecha a ligação e limpa as variáveis
        connection.Close()
        connection = Nothing
        command = Nothing
        MsgBox(" Registo inserido com sucesso", MsgBoxStyle.Information)
        ' Catch ex As Exception
        MessageBox.Show("A operação efectuada não retomou qualquer resultado.")
        'End Try
    End Sub

Experimentado, dá erro nesta parte do codigo: ParameterName = "@empresa"

o erro é "Object reference not set to an instance of an object."

o que estou a fazer de errado?

EDIT: GeSHi adicionado

Link to comment
Share on other sites

Não estás a instanciar o parâmetro, podes fazer directamente, tipo

command.Parameters.Add("@empresa", SqlDbType.VarChar, cbxEmpresa.Text)
command.Parameters.Add("@nome_rede", SqlDbType.Int, txtNomeRede.Text)
'...

Pedro Martins

Não respondo a duvidas por PM

Link to comment
Share on other sites

Boas Caça.
Instanciar directamente não o fiz,mas tinha alterado para:

[code] command.Parameters.Add("@empresa", SqlDbType.VarChar).Value = cbxEmpresa.Text
        command.Parameters.Add("@nome_rede", SqlDbType.VarChar).Value = txtNomeRede.Text

Mas dá-me o erro que não encontra o storedProcedure.
A minha conecao é:
Dim myConnectionString As String = _
         "Data Source=.\SQLEXPRESS; Initial Catalog=GestInf; Integrated Security=SSPI;"

Já ando nisto há quase 2 semanas  :wallbash:

Link to comment
Share on other sites

 ' Texto de ligação à base de dados
        Dim myConnectionString As String = _
         "Data Source=.\SQLEXPRESS; Initial Catalog=GestInf; Integrated Security=SSPI;"
        
        ' Cria uma nova ligação à base de dados
        Dim connection As New SqlConnection(myConnectionString)
        connection.Open()
        ' Comando que irá inserir dados na tabela "GestInformatica"  os campos
        'que são passados através de parâmetros
        Dim command As New SqlCommand("Insere_Registos", connection)
        '' Indicação dos parâmetros que serão inseridos
        command.Connection = connection
        command.CommandText = "Insere_Registos"
        command.CommandType = CommandType.StoredProcedure
        command.Parameters.Add("@empresa", SqlDbType.VarChar).Value = cbxEmpresa.Text
        command.Parameters.Add("@nome_rede", SqlDbType.VarChar).Value = txtNomeRede.Text
        command.Parameters.Add("@utilizador", SqlDbType.VarChar).Value = txtUtilizador.Text
        command.Parameters.Add("@visivel_rede", SqlDbType.Int).Value = cbxVisivel_Rede.Text
        command.Parameters.Add("@localizacao", SqlDbType.VarChar).Value = cbxLocalizacao.Text
        command.Parameters.Add("@departamento", SqlDbType.VarChar).Value = cbxDepartamento.Text
        command.Parameters.Add("@sistema_operativo", SqlDbType.VarChar).Value = txtSO.Text
        command.Parameters.Add("@user_baan", SqlDbType.VarChar).Value = cbxUserBaan.Text
        command.Parameters.Add("@user_citrix", SqlDbType.VarChar).Value = cbxUserCitrix.Text
        command.Parameters.Add("@user_internet", SqlDbType.VarChar).Value = cbxUserInternet.Text
        command.Parameters.Add("@office", SqlDbType.VarChar).Value = txtOffice.Text
        command.Parameters.Add("@numero_office", SqlDbType.Int).Value = txtNOffice.Text
        command.Parameters.Add("@licenca_office", SqlDbType.VarChar).Value = txtSeloOffice.Text
        command.Parameters.Add("@dl", SqlDbType.VarChar).Value = cbxDL.Text
        command.Parameters.Add("@observacao", SqlDbType.VarChar).Value = txtObservacoes.Text
        command.Parameters.Add("@selo_windows", SqlDbType.VarChar).Value = txtSeloWindows.Text
        command.Parameters.Add("@autenticacao", SqlDbType.VarChar).Value = cbxLegal.Text
        command.Parameters.Add("@office_audit", SqlDbType.VarChar).Value = txtOfficeAuditoria.Text
        command.Parameters.Add("@server_cal", SqlDbType.Int).Value = cbxServer.Text
        command.Parameters.Add("@ex_cal", SqlDbType.Int).Value = cbxEx.Text
        command.Parameters.Add("@sql_cal", SqlDbType.Int).Value = cbxSQL.Text

        'Executa o comando e guarda em "x" o número de registos inseridos
        Dim x As Integer = command.ExecuteNonQuery()
        If x < 1 Then

        End If
        ' Fecha a ligação e limpa as variáveis
        connection.Close()
        connection = Nothing
        command = Nothing
        MsgBox(" Registo inserido com sucesso", MsgBoxStyle.Information)
        ' Catch ex As Exception
        MessageBox.Show("A operação efectuada não retomou qualquer resultado.")
        'End Try
Link to comment
Share on other sites

Já..

Aqui está ela:

CREATE PROCEDURE Insere_Registos (
@empresa VARCHAR(50),
@nome_rede VARCHAR(100),
@utilizador VARCHAR(100),
@visivel_rede INT ,
@localizacao VARCHAR(50),
@departamento VARCHAR (50),
@sistema_operativo VARCHAR (10),
@user_baan VARCHAR (5),
@user_citrix VARCHAR (10),
@user_internet VARCHAR(5),
@office VARCHAR (10),
@numero_office INT ,
@licenca_office VARCHAR (40),
@dl VARCHAR (5),
@observacao VARCHAR (MAX),
@selo_windows VARCHAR (50),
@autenticacao VARCHAR (10),
@office_audit VARCHAR (20),
@server_cal INT,
@ex_cal INT,
@sql_cal INT,
@foto_seloffice IMAGE,
@foto_selowin IMAGE)

AS

Begin TRAN
insert into empresa values (@empresa )
insert into nome_rede values (@nome_rede )
insert into utilizador values (@utilizador )
insert into visivel_rede values (@visivel_rede )
insert into localizacao values (@localizacao )
insert into departamento values(@departamento )
insert into sistema_operativo values (@sistema_operativo )
insert into user_baan values (@user_baan )
insert into user_citrix values (@user_citrix )
insert into user_internet values (@user_internet )
insert into office values (@office )
insert into numero_office values (@numero_office )
insert into licenca_office values (@licenca_office )
insert into dl values (@dl )
insert into observacao values (@observacao )
insert into selo_windows values (@selo_windows )
insert into autenticacao values (@autenticacao )
insert into office_audit values (@office_audit )
insert into server_cal values (@server_cal )
insert into ex_cal values (@ex_cal )
insert into sql_cal values(@sql_cal )
insert into foto_seloffice values (@foto_seloffice )
insert into foto_selowin values (@foto_selowin )

commit

pesquisei pela net como se criava,pois o meu curso teve cortes de €€ e não queriam prolongar-se nas horas para o ensino,sendo assim,não foi falado de muita coisa.

O meu prof. de vb falou-nos por alto, no commit/roolback,mas , sinceramente não sei o que isso é.... ?

Daí pedir a ajuda no forum.  😉

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.