Blackvelvet Posted March 15, 2012 at 07:13 PM Report #444088 Posted March 15, 2012 at 07:13 PM 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
Caça Posted March 15, 2012 at 07:19 PM Report #444090 Posted March 15, 2012 at 07:19 PM Não percebi a tua duvida, queres inserir um registo em 23 tabelas de uma só vez? Pedro Martins Não respondo a duvidas por PM
Blackvelvet Posted March 16, 2012 at 02:49 PM Author Report #444212 Posted March 16, 2012 at 02:49 PM Exactamente. Isso é possivel? Se sim,como?
Caça Posted March 16, 2012 at 02:54 PM Report #444215 Posted March 16, 2012 at 02:54 PM Mas o registo é igual para todas? Deves criar um Trigger para fazer isso, é mais seguro. Pedro Martins Não respondo a duvidas por PM
Blackvelvet Posted March 16, 2012 at 03:10 PM Author Report #444220 Posted March 16, 2012 at 03:10 PM Não. cada tabela tem um registo diferente. Exemplo: utilizador,nome da rede, que ofice usa, que SO usa..... Mas tudo isto num só form.
Caça Posted March 16, 2012 at 03:16 PM Report #444223 Posted March 16, 2012 at 03:16 PM Ok, mas cada um desses campos vai para uma tabela? Não estou a perceber... Pedro Martins Não respondo a duvidas por PM
Blackvelvet Posted March 16, 2012 at 03:18 PM Author Report #444225 Posted March 16, 2012 at 03:18 PM Exacto. 1 tabela, 1 campo.
Caça Posted March 16, 2012 at 03:23 PM Report #444231 Posted March 16, 2012 at 03:23 PM Então deves fazer mesmo 23 inserts separado mas com uma transacção aberta, ou então cria uma StoredProcedure na base de dados que vai fazer essa inserção toda de uma só vez. Pedro Martins Não respondo a duvidas por PM
Blackvelvet Posted March 16, 2012 at 03:35 PM Author Report #444232 Posted March 16, 2012 at 03:35 PM Desculpa a minha ignorancia,mas como é que faço o StorageProcedure?
Caça Posted March 16, 2012 at 04:04 PM Report #444240 Posted March 16, 2012 at 04:04 PM 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
Blackvelvet Posted March 16, 2012 at 04:29 PM Author Report #444248 Posted March 16, 2012 at 04:29 PM Caça, Obrigado pela ajuda. Um abraço
Blackvelvet Posted March 20, 2012 at 05:04 PM Author Report #444776 Posted March 20, 2012 at 05:04 PM 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
Caça Posted March 21, 2012 at 10:04 AM Report #444867 Posted March 21, 2012 at 10:04 AM 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
Blackvelvet Posted March 21, 2012 at 03:02 PM Author Report #444901 Posted March 21, 2012 at 03:02 PM 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
Caça Posted March 21, 2012 at 03:04 PM Report #444902 Posted March 21, 2012 at 03:04 PM Mostra o teu código actual Pedro Martins Não respondo a duvidas por PM
Blackvelvet Posted March 21, 2012 at 03:05 PM Author Report #444903 Posted March 21, 2012 at 03:05 PM ' 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
Caça Posted March 21, 2012 at 03:15 PM Report #444906 Posted March 21, 2012 at 03:15 PM Já criaste o StoredProcedure nessa base de dados? Pedro Martins Não respondo a duvidas por PM
Blackvelvet Posted March 21, 2012 at 03:20 PM Author Report #444908 Posted March 21, 2012 at 03:20 PM 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. 😉
Caça Posted March 21, 2012 at 03:29 PM Report #444910 Posted March 21, 2012 at 03:29 PM Ok, mas executas-te isso na Base de Dados? Pedro Martins Não respondo a duvidas por PM
Blackvelvet Posted March 21, 2012 at 03:32 PM Author Report #444911 Posted March 21, 2012 at 03:32 PM Executar,como assim?
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now