Usuário com melhor resposta
SELECT IDENT_CURRENT

Pergunta
-
Como pegar o ID da primeira tabela(tb_resultado_pf_anamnese) após um Insert e usar nas tabelas seguintes(tb_resultado_pf_pressao_arterial/tb_resultado_pf_glicemia_capilar). Eu usei os códigos abaixo, mas retornam com erro.
Public Function novo_historico2(p_data, p_cod_evento, p_cod_profissional, p_cod_pf, p_cod_tem_diabetes, p_cod_tem_familiares_diabeticos, p_cod_jejum, p_diastole, p_sistole, p_cod_proc_pa, p_glicemia, p_cod_proc_glicemia) As ArrayList
Dim aDR As ArrayList = New ArrayList()
Dim comando As String
comando = "INSERT INTO tb_resultado_pf_anamnese (data, cod_evento, cod_profissional, cod_pf, cod_tem_diabetes, cod_tem_familiares_diabeticos, cod_jejum)" + _
"VALUES (@Par1, @Par2, @Par3, @Par4, @Par5, @Par6, @Par7)" + _
"INSERT INTO tb_resultado_pf_pressao_arterial (data, cod_evento, cod_profissional, cod_pf, cod_historico, diastole, sistole, cod_proc_pa)" + _
"VALUES (@Par8, @Par9, @Par10, @Par11, (SELECT IDENT_CURRENT('tb_resultado_pf_anamnese')), @Par13, @Par14, @Par15)" + _
"INSERT INTO tb_resultado_pf_glicemia_capilar (data, cod_evento, cod_profissional, cod_pf, cod_historico, glicemia, cod_proc_glicemia)" + _
"VALUES (@Par16, @Par17, @Par18, @Par19, (SELECT IDENT_CURRENT('tb_resultado_pf_anamnese')), @Par21, @Par22);"
Dim param As ArrayList = New ArrayList()
param.Add(p_data)
param.Add(p_cod_evento)
param.Add(p_cod_profissional)
param.Add(p_cod_pf)
param.Add(p_cod_tem_diabetes)
param.Add(p_cod_tem_familiares_diabeticos)
param.Add(p_cod_jejum)
param.Add(p_data)
param.Add(p_cod_evento)
param.Add(p_cod_profissional)
param.Add(p_cod_pf)
param.Add(p_diastole)
param.Add(p_sistole)
param.Add(p_cod_proc_pa)
param.Add(p_data)
param.Add(p_cod_evento)
param.Add(p_cod_profissional)
param.Add(p_cod_pf)
param.Add(p_glicemia)
param.Add(p_cod_proc_glicemia)
aDR = Class2_ExecuteBD.Comando(comando, param)
Return aDR
End Function
ERRO:
É necessário declarar a variável escalar "@Par21".Public Function novo_historico2(p_data, p_cod_evento, p_cod_profissional, p_cod_pf, p_cod_tem_diabetes, p_cod_tem_familiares_diabeticos, p_cod_jejum, p_diastole, p_sistole, p_cod_proc_pa, p_glicemia, p_cod_proc_glicemia) As ArrayList
Dim aDR As ArrayList = New ArrayList()
Dim comando As String
comando = "INSERT INTO tb_resultado_pf_anamnese (data, cod_evento, cod_profissional, cod_pf, cod_tem_diabetes, cod_tem_familiares_diabeticos, cod_jejum)" + _
"VALUES (@Par1, @Par2, @Par3, @Par4, @Par5, @Par6, @Par7)" + _
"INSERT INTO tb_resultado_pf_pressao_arterial (data, cod_evento, cod_profissional, cod_pf, (SELECT IDENT_CURRENT('tb_resultado_pf_anamnese')), diastole, sistole, cod_proc_pa)" + _
"VALUES (@Par8, @Par9, @Par10, @Par11, @Par12, @Par13, @Par14, @Par15)" + _
"INSERT INTO tb_resultado_pf_glicemia_capilar (data, cod_evento, cod_profissional, cod_pf, (SELECT IDENT_CURRENT('tb_resultado_pf_anamnese')), glicemia, cod_proc_glicemia)" + _
"VALUES (@Par16, @Par17, @Par18, @Par19, @Par20, @Par21, @Par22);"
Dim param As ArrayList = New ArrayList()
param.Add(p_data)
param.Add(p_cod_evento)
param.Add(p_cod_profissional)
param.Add(p_cod_pf)
param.Add(p_cod_tem_diabetes)
param.Add(p_cod_tem_familiares_diabeticos)
param.Add(p_cod_jejum)
param.Add(p_diastole)
param.Add(p_sistole)
param.Add(p_cod_proc_pa)
param.Add(p_glicemia)
param.Add(p_cod_proc_glicemia)
aDR = Class2_ExecuteBD.Comando(comando, param)
Return aDR
End Function
ERRO
Sintaxe incorreta próxima a '('.
Sintaxe incorreta próxima a ','.
Sintaxe incorreta próxima a '('.
Public Function novo_historico2(p_data, p_cod_evento, p_cod_profissional, p_cod_pf, p_cod_tem_diabetes, p_cod_tem_familiares_diabeticos, p_cod_jejum, p_diastole, p_sistole, p_cod_proc_pa, p_glicemia, p_cod_proc_glicemia) As ArrayList
Dim aDR As ArrayList = New ArrayList()
Dim comando As String
comando = "INSERT INTO tb_resultado_pf_anamnese (data, cod_evento, cod_profissional, cod_pf, cod_tem_diabetes, cod_tem_familiares_diabeticos, cod_jejum)" + _
"VALUES (@Par1, @Par2, @Par3, @Par4, @Par5, @Par6, @Par7)" + _
"INSERT INTO tb_resultado_pf_pressao_arterial (data, cod_evento, cod_profissional, cod_pf, SELECT SCOPE_IDENTITY(), diastole, sistole, cod_proc_pa)" + _
"VALUES (@Par8, @Par9, @Par10, @Par11, @Par12, @Par13, @Par14, @Par15)" + _
"INSERT INTO tb_resultado_pf_glicemia_capilar (data, cod_evento, cod_profissional, cod_pf, SELECT SCOPE_IDENTITY(), glicemia, cod_proc_glicemia)" + _
"VALUES (@Par16, @Par17, @Par18, @Par19, @Par20, @Par21, @Par22);"
Dim param As ArrayList = New ArrayList()
param.Add(p_data)
param.Add(p_cod_evento)
param.Add(p_cod_profissional)
param.Add(p_cod_pf)
param.Add(p_cod_tem_diabetes)
param.Add(p_cod_tem_familiares_diabeticos)
param.Add(p_cod_jejum)
param.Add(p_diastole)
param.Add(p_sistole)
param.Add(p_cod_proc_pa)
param.Add(p_glicemia)
param.Add(p_cod_proc_glicemia)
aDR = Class2_ExecuteBD.Comando(comando, param)
Return aDR
End Function
ERRO:
Sintaxe incorreta próxima à palavra-chave 'SELECT'.
Sintaxe incorreta próxima a ')'.
Sintaxe incorreta próxima à palavra-chave 'SELECT'.
Public Function novo_historico2(p_data, p_cod_evento, p_cod_profissional, p_cod_pf, p_cod_tem_diabetes, p_cod_tem_familiares_diabeticos, p_cod_jejum, p_diastole, p_sistole, p_cod_proc_pa, p_glicemia, p_cod_proc_glicemia) As ArrayList
Dim aDR As ArrayList = New ArrayList()
Dim comando As String
comando = "INSERT INTO tb_resultado_pf_anamnese (data, cod_evento, cod_profissional, cod_pf, cod_tem_diabetes, cod_tem_familiares_diabeticos, cod_jejum)" + _
"VALUES (@Par1, @Par2, @Par3, @Par4, @Par5, @Par6, @Par7)" + _
"INSERT INTO tb_resultado_pf_pressao_arterial (data, cod_evento, cod_profissional, cod_pf, (SELECT SCOPE_IDENTITY(), diastole, sistole, cod_proc_pa)" + _
"VALUES (@Par8, @Par9, @Par10, @Par11, @Par12, @Par13, @Par14, @Par15)" + _
"INSERT INTO tb_resultado_pf_glicemia_capilar (data, cod_evento, cod_profissional, cod_pf, (SELECT SCOPE_IDENTITY(), glicemia, cod_proc_glicemia)" + _
"VALUES (@Par16, @Par17, @Par18, @Par19, @Par20, @Par21, @Par22);"
Dim param As ArrayList = New ArrayList()
param.Add(p_data)
param.Add(p_cod_evento)
param.Add(p_cod_profissional)
param.Add(p_cod_pf)
param.Add(p_cod_tem_diabetes)
param.Add(p_cod_tem_familiares_diabeticos)
param.Add(p_cod_jejum)
param.Add(p_diastole)
param.Add(p_sistole)
param.Add(p_cod_proc_pa)
param.Add(p_glicemia)
param.Add(p_cod_proc_glicemia)
aDR = Class2_ExecuteBD.Comando(comando, param)
Return aDR
End FunctionERRO:
Sintaxe incorreta próxima a '('.
Sintaxe incorreta próxima a ','.
Sintaxe incorreta próxima a '('.
Public Function novo_historico2(p_data, p_cod_evento, p_cod_profissional, p_cod_pf, p_cod_tem_diabetes, p_cod_tem_familiares_diabeticos, p_cod_jejum, p_diastole, p_sistole, p_cod_proc_pa, p_glicemia, p_cod_proc_glicemia) As ArrayList
Dim aDR As ArrayList = New ArrayList()
Dim comando As String
comando = "INSERT INTO tb_resultado_pf_anamnese (data, cod_evento, cod_profissional, cod_pf, cod_tem_diabetes, cod_tem_familiares_diabeticos, cod_jejum)" + _
"VALUES (@Par1, @Par2, @Par3, @Par4, @Par5, @Par6, @Par7)" + _
"INSERT INTO tb_resultado_pf_pressao_arterial (data, cod_evento, cod_profissional, cod_pf, cod_historico, diastole, sistole, cod_proc_pa)" + _
"VALUES (@Par8, @Par9, @Par10, @Par11, SELECT SCOPE_IDENTITY(), @Par13, @Par14, @Par15)" + _
"INSERT INTO tb_resultado_pf_glicemia_capilar (data, cod_evento, cod_profissional, cod_pf, cod_historico, glicemia, cod_proc_glicemia)" + _
"VALUES (@Par16, @Par17, @Par18, @Par19, SELECT SCOPE_IDENTITY(), @Par21, @Par22);"
Dim param As ArrayList = New ArrayList()
param.Add(p_data)
param.Add(p_cod_evento)
param.Add(p_cod_profissional)
param.Add(p_cod_pf)
param.Add(p_cod_tem_diabetes)
param.Add(p_cod_tem_familiares_diabeticos)
param.Add(p_cod_jejum)
param.Add(p_diastole)
param.Add(p_sistole)
param.Add(p_cod_proc_pa)
param.Add(p_glicemia)
param.Add(p_cod_proc_glicemia)
aDR = Class2_ExecuteBD.Comando(comando, param)
Return aDR
End Function
ERRO:
Sintaxe incorreta próxima à palavra-chave 'SELECT'.
É necessário declarar a variável escalar "@Par13".
É necessário declarar a variável escalar "@Par16".
- Editado Wilson Boris segunda-feira, 5 de agosto de 2013 12:51 COMPLEMNTO
Respostas
-
Você deve dar um espacinho em todos INSERTS e VALUES Deixando assim :
comando = " INSERT INTO tb_resultado_pf_anamnese (data, cod_evento, cod_profissional, cod_pf, cod_tem_diabetes, cod_tem_familiares_diabeticos, cod_jejum)" + _ " VALUES (@Par1, @Par2, @Par3, @Par4, @Par5, @Par6, @Par7)" + _ " INSERT INTO tb_resultado_pf_pressao_arterial (data, cod_evento, cod_profissional, cod_pf, (SELECT IDENT_CURRENT('tb_resultado_pf_anamnese')), diastole, sistole, cod_proc_pa)" + _ " VALUES (@Par8, @Par9, @Par10, @Par11, @Par12, @Par13, @Par14, @Par15)" + _ " INSERT INTO tb_resultado_pf_glicemia_capilar (data, cod_evento, cod_profissional, cod_pf, (SELECT IDENT_CURRENT('tb_resultado_pf_anamnese')), glicemia, cod_proc_glicemia)" + _ " VALUES (@Par16, @Par17, @Par18, @Par19, @Par20, @Par21, @Par22);"
A diferença do meu para o seu é apenas os espacinhos nos INSERTS e VALUES.
Se lhe foi útil marque como resposta.
Davi Murilo Referência Principal : Jesus que ilumina minha mente.
Referência Profissonal : http://www.tidm.com.br- Editado Davi Murilo segunda-feira, 5 de agosto de 2013 12:54 Complemento
- Marcado como Resposta Wilson Boris quarta-feira, 7 de agosto de 2013 10:44
-
Achei é aqui ó :
"INSERT INTO tb_resultado_pf_pressao_arterial (data, cod_evento, cod_profissional, cod_pf, (SELECT IDENT_CURRENT('tb_resultado_pf_anamnese')), diastole, sistole, cod_proc_pa)" + _
Você não pode passar o SELECT IDENT_CURRENT , nos campos , somente nos VALUES .
ou seja essa parte tb_resultado_pf_pressao_arterial(aqui não pode ter funções apenas os campos da tabela)
VALUES (' Já aqui tudo bem');
Se lhe foi útil marque como resposta.
Davi Murilo Referência Principal : Jesus que ilumina minha mente.
Referência Profissonal : http://www.tidm.com.br- Editado Davi Murilo segunda-feira, 5 de agosto de 2013 13:22 c
- Marcado como Resposta Wilson Boris quarta-feira, 7 de agosto de 2013 10:44
-
A questão é os seus parametros. como já foi declarado valor no VALUES , e não apenas @AlgumaCoisa , o seu código diz que falta parametros . Verifique se você pode trocar o seu código SELECT IDENT_ ...... , por @Par13 e o próximo por @Par16 , porém no Add se sua LisArray como adcionar com o Código "SELECT IDENT_CURRENT('tabela')" , algo como
param.Add("SELECT IDENT_CURRENT('tabela')")
Espero ter ajudado.
Davi Murilo Referência Principal : Jesus que ilumina minha mente.
Referência Profissonal : http://www.tidm.com.br- Marcado como Resposta Wilson Boris quarta-feira, 7 de agosto de 2013 10:44
-
Boa tarde, meu nome é Davi blz rs, Então é seguinte eu não estou acostumado a usar parametros da forma que você fez , mas pelo o que eu entendeo é seguinte
Quando se tem algo asssim :
Dim Comando AS String = "INSERT Tab(A,B,C) VALUES (@A,@B,@C");
Significa que deve existir exatamente a mesma ordem de parametros como no exemplo :
Dim param As ArrayList = New ArrayList() param.Add('Valor A') param.Add('Valor B') param.Add('Valor C')
Porém na sua lógica de inserção deve ter examente esses parametros esperando para serem inseridos algo como :
Dim cmd As SqlCommand = New SqlCommand() cmd.Connection = cn ' Conexao banco cmd.CommandText = "Instrução SQL" cmd.Parameters.AddWithValue("@A",param[0]) cmd.Parameters.AddWithValue("@B",param[1]) cmd.Parameters.AddWithValue("@C",param[2]) cmd.ExecuteNonQuery()
Veja a sua classe Class2_ExecuteBD.Comando , provavelmente seus parametros do Command não estão de acordo.
Espero ter ajudado.
Davi Murilo Referência Principal : Jesus que ilumina minha mente.
Referência Profissonal : http://www.tidm.com.br- Editado Davi Murilo segunda-feira, 5 de agosto de 2013 15:41 C
- Marcado como Resposta Wilson Boris quarta-feira, 7 de agosto de 2013 10:44
-
Boa tarde .
Olha na boa , mas o ideal para o seu código seria procedures, Pois o erro que dá é porque no final da passagem dos parametros seu INSERT lá no banco ficará com a linha "SELECT IDENT_CURRENT('tb_resultado_pf_anamnese')" Como se fosse um texto sendo que lá no banco ele espera um inteiro.
Pesquise sobre procedures de inserção e parâmetros , seu código ficará mais legível , rápido e seguro.
Davi Murilo Referência Principal : Jesus que ilumina minha mente.
Referência Profissonal : http://www.tidm.com.br- Marcado como Resposta Wilson Boris quarta-feira, 7 de agosto de 2013 10:44
-
Bom troquei seu SQL e coloquei um comentário veja se lhe ajuda :
-- Você deve debugar pelo visual studio Cada paramentro que está sendo passando -- Pegar cada parametro e tentar rodar a procedure com esses parametros diretamente -- No banco , porque se assim for normal , aí podemos descartar o banco como causador -- do erro e se focar apenas na aplicação. -- ex : Na sua aplicação, lá tem um ArrayList , basta pegar tudo que está passando por ele -- e vincular a uma unica string a qual irá ser usada como paramentro unico diretamente no banco -- Seria algo : assim -- Dim TesteParametro = param[0] & "," & param[1] & "," & param[2] ' e assim por diante -- No final do debug nessa linha você terá os valores no Add Watch -- algo assim : 1,"nome","data" etc.. , basta pegar isso troca as aspas duplas por simples colocar -- um EXECUTE procedure 1,'nome','data' etc.. -- Tente ir debugando e principalmente tente entender o processo ALTER PROCEDURE [dbo].[spInsereAtendimento] -- Add the parameters for the stored procedure here @data As DateTime, @cod_evento As Integer, @cod_profissional As Integer, @cod_pf As Integer, @cod_tem_diabetes As Integer, @cod_tem_familiares_diabeticos As Integer, @cod_jejum As Integer, @diastole As Integer, @sistole As Integer, @cod_proc_pa As Integer, @glicemia As Integer, @cod_proc_glicemia As Integer AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; -- Insert statements for procedure here DECLARE @tb_resultado_pf_anamnese AS INT SET @tb_resultado_pf_anamnese = (SELECT IDENT_CURRENT('tb_resultado_pf_anamnese')) -- O Select Abaixo é apenas para você saber se realmente sua aplicação está passando todos -- Os parametros correto. Após resolver retirar o SELECT e o RETURN SELECT @data,@cod_evento,@cod_profissional,@cod_pf,@cod_tem_diabetes,@cod_tem_familiares_diabeticos, @cod_jejum,@diastole,@sistole,@cod_proc_pa,@glicemia,@cod_proc_glicemia RETURN -- Isso faz com que o restante do código abaixo não seja executado INSERT INTO tb_resultado_pf_anamnese (data, cod_evento, cod_profissional, cod_pf, cod_tem_diabetes, cod_tem_familiares_diabeticos, cod_jejum) VALUES (@data, @cod_evento, @cod_profissional, @cod_pf, @cod_tem_diabetes, @cod_tem_familiares_diabeticos, @cod_jejum) INSERT INTO tb_resultado_pressao_arterial (data, cod_evento, cod_profissional, cod_pf, cod_historico, diastole, sistole, cod_proc_pa) VALUES (@data, @cod_evento, @cod_profissional, @cod_pf, @tb_resultado_pf_anamnese, @diastole, @sistole, @cod_proc_pa) INSERT INTO tb_resultado_glicemia_capilar (data, cod_evento, cod_profissional, cod_pf, cod_historico, glicemia, cod_proc_glicemia) VALUES (@data, @cod_evento, @cod_profissional, @cod_pf,@tb_resultado_pf_anamnese, @glicemia, @cod_proc_glicemia); END
Davi Murilo Referência Principal : Jesus que ilumina minha mente.
Referência Profissonal : http://www.tidm.com.br- Marcado como Resposta Wilson Boris quarta-feira, 7 de agosto de 2013 10:43
-
Pois via skype eu conseguirei te explicar melhor, senão esse post vai ficar cada vez maior.
Blz.
Davi Murilo Referência Principal : Jesus que ilumina minha mente.
Referência Profissonal : http://www.tidm.com.br- Marcado como Resposta Wilson Boris quarta-feira, 7 de agosto de 2013 10:43
-
Valeu gigante Davi pelo apoio através do Skype, assim minimizamos o espaço no forum e o código ficou bonito, rsrsrs, saliento a satisfação de apreender muito contigo. Abaixo o conhecimento para socializarmos. Muito obrigado professor.
CAMADA VIEW
Imports System.Data.Common
Imports System.Data.DataSet
Imports System.Web.UI.WebControls
Imports System.Data.SqlClient
Imports WRB.Model
Imports parametro.WRB.parametro
novo_historico.novo_historico_procedure(New AtendimentoPaciente() With {.Data = Label10.Text, .cod_evento = DropDownList1_evento_ex.SelectedValue, .cod_pf = Label6_cod_pf_login.Text, .cod_profissional = DropDownList6_nome.SelectedValue, .cod_tem_diabetes = RadioButtonList8_tem_diabetes.Text, .cod_tem_familiares_diabeticos = RadioButtonList9_familia_dia.Text, .cod_jejum = RadioButtonList7_jejum.Text, .diastole = TextBox23_diastolica.Text, .sistole = TextBox22_sistolica.Text, .cod_proc_pa = 301100039, .glicemia = TextBox20_glicemia.Text, .cod_proc_glicemia = 214010015})
Label1.Text = (String.Format("Registro incluido com sucesso."))
CAMADA MODEL
Imports System.Data.Common
Imports System.Data.SqlClient
Imports WRB.Data
Imports parametro.WRB.parametro
Public Sub novo_historico_procedure(AtendimentoPaciente As AtendimentoPaciente)
Class2_ExecuteBD_Procedure.InsereAtendimentoPaciente(AtendimentoPaciente)
End Sub
CAMADA DATA
Imports System.Data.SqlClient
Imports parametro.WRB.parametro
Public Class Class2_ExecuteBD_Procedure
Public Shared Function InsereAtendimentoPaciente(AtendimentoPaciente As AtendimentoPaciente)
Dim retorno As ArrayList = New ArrayList()
Dim erro As Exception
Dim erromensagem As String = ""
Dim DT As DataTable = New DataTable()
Using CN As SqlConnection = New SqlConnection()
Try
CN.ConnectionString = My.Settings.cn1
Dim com As SqlCommand = New SqlCommand()
com.CommandText = "spInsereAtendimento"
com.CommandType = CommandType.StoredProcedure
com.Parameters.AddWithValue("@data", AtendimentoPaciente.Data)
com.Parameters.AddWithValue("@cod_evento", AtendimentoPaciente.cod_evento)
com.Parameters.AddWithValue("@cod_profissional", AtendimentoPaciente.cod_profissional)
com.Parameters.AddWithValue("@cod_pf", AtendimentoPaciente.cod_pf)
com.Parameters.AddWithValue("@cod_tem_diabetes", AtendimentoPaciente.cod_tem_diabetes)
com.Parameters.AddWithValue("@cod_tem_familiares_diabeticos ", AtendimentoPaciente.cod_tem_familiares_diabeticos)
com.Parameters.AddWithValue("@cod_jejum ", AtendimentoPaciente.cod_jejum)
com.Parameters.AddWithValue("@data2", AtendimentoPaciente.Data)
com.Parameters.AddWithValue("@cod_evento2", AtendimentoPaciente.cod_evento)
com.Parameters.AddWithValue("@cod_profissional2", AtendimentoPaciente.cod_profissional)
com.Parameters.AddWithValue("@cod_pf2", AtendimentoPaciente.cod_pf)
com.Parameters.AddWithValue("@diastole", AtendimentoPaciente.diastole)
com.Parameters.AddWithValue("@sistole", AtendimentoPaciente.sistole)
com.Parameters.AddWithValue("@cod_proc_pa", AtendimentoPaciente.cod_proc_pa)
com.Parameters.AddWithValue("@cod_pf3", AtendimentoPaciente.cod_pf)
com.Parameters.AddWithValue("@data3 ", AtendimentoPaciente.Data)
com.Parameters.AddWithValue("@cod_evento3", AtendimentoPaciente.cod_evento)
com.Parameters.AddWithValue("@cod_profissional3", AtendimentoPaciente.cod_profissional)
com.Parameters.AddWithValue("@glicemia", AtendimentoPaciente.glicemia)
com.Parameters.AddWithValue("@cod_proc_glicemia ", AtendimentoPaciente.cod_proc_glicemia)
com.Connection = CN
CN.Open()
Dim qtd As Integer = com.ExecuteNonQuery()
retorno.Add(qtd)
CN.Close()
Return retorno
Catch ex As InvalidCastException
erro = ex
erromensagem = "Erro de conversão de dados"
retorno.Add(0)
retorno.Add(erro)
retorno.Add(erromensagem)
Catch ex As SqlException
erro = ex
erromensagem = "Erro ao acessar o Banco de Dados"
retorno.Add(0)
retorno.Add(erro)
retorno.Add(erromensagem)
Catch ex As AccessViolationException
erro = ex
erromensagem = "Erro de Violação de acesso a BD"
retorno.Add(0)
retorno.Add(erro)
retorno.Add(erromensagem)
Catch ex As Exception
erro = ex
erromensagem = "Erro Generico não esperado"
retorno.Add(0)
retorno.Add(erro)
retorno.Add(erromensagem)
End Try
End Using
Return retorno
End Function
End Class
Namespace
Namespace WRB.parametro
Public Class AtendimentoPaciente
Private _Data As DateTime
Public Property Data As DateTime
Get
Return _Data
End Get
Set(value As DateTime)
_Data = value
End Set
End Property
Private _cod_evento As Integer
Public Property cod_evento As Integer
Get
Return _cod_evento
End Get
Set(value As Integer)
_cod_evento = value
End Set
End Property
Private _cod_profissional As Integer
Public Property cod_profissional As Integer
Get
Return _cod_profissional
End Get
Set(value As Integer)
_cod_profissional = value
End Set
End Property
Private _cod_pf As Integer
Public Property cod_pf As Integer
Get
Return _cod_pf
End Get
Set(value As Integer)
_cod_pf = value
End Set
End Property
Private _cod_tem_diabetes As Integer
Public Property cod_tem_diabetes As Integer
Get
Return _cod_tem_diabetes
End Get
Set(value As Integer)
_cod_tem_diabetes = value
End Set
End Property
Private _cod_tem_familiares_diabeticos As Integer
Public Property cod_tem_familiares_diabeticos As Integer
Get
Return _cod_tem_familiares_diabeticos
End Get
Set(value As Integer)
_cod_tem_familiares_diabeticos = value
End Set
End Property
Private _cod_jejum As Integer
Public Property cod_jejum As Integer
Get
Return _cod_jejum
End Get
Set(value As Integer)
_cod_jejum = value
End Set
End Property
Private _diastole As Integer
Public Property diastole As Integer
Get
Return _diastole
End Get
Set(value As Integer)
_diastole = value
End Set
End Property
Private _sistole As Integer
Public Property sistole As Integer
Get
Return _sistole
End Get
Set(value As Integer)
_sistole = value
End Set
End Property
Private _cod_proc_pa As Integer
Public Property cod_proc_pa As Integer
Get
Return _cod_proc_pa
End Get
Set(value As Integer)
_cod_proc_pa = value
End Set
End Property
Private _glicemia As Integer
Public Property glicemia As Integer
Get
Return _glicemia
End Get
Set(value As Integer)
_glicemia = value
End Set
End Property
Private _cod_proc_glicemia As Integer
Public Property cod_proc_glicemia As Integer
Get
Return _cod_proc_glicemia
End Get
Set(value As Integer)
_cod_proc_glicemia = value
End Set
End Property
End Class
End Namespace
StoreProcedure
USE [SIADS_SQL]
GO
/****** Object: StoredProcedure [dbo].[spInsereAtendimento] Script Date: 07-08-2013 07:21:18 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[spInsereAtendimento]
-- Add the parameters for the stored procedure here
@data As DateTime,
@cod_evento As Integer,
@cod_profissional As Integer,
@cod_pf As Integer,
@cod_tem_diabetes As Integer,
@cod_tem_familiares_diabeticos As Integer,
@cod_jejum As Integer,
@data2 As DateTime,
@cod_evento2 As Integer,
@cod_profissional2 As Integer,
@cod_pf2 As Integer,
@diastole As Integer,
@sistole As Integer,
@cod_proc_pa As Integer,
@data3 As DateTime,
@cod_evento3 As Integer,
@cod_profissional3 As Integer,
@cod_pf3 As Integer,
@glicemia As Integer,
@cod_proc_glicemia As Integer
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
DECLARE @tb_resultado_pf_anamnese AS INT
SET @tb_resultado_pf_anamnese = (SELECT IDENT_CURRENT('tb_resultado_pf_anamnese'))
INSERT INTO tb_resultado_pf_anamnese (data, cod_evento, cod_profissional, cod_pf, cod_tem_diabetes, cod_tem_familiares_diabeticos, cod_jejum)
VALUES (@data, @cod_evento, @cod_profissional, @cod_pf, @cod_tem_diabetes, @cod_tem_familiares_diabeticos, @cod_jejum)
INSERT INTO tb_resultado_pressao_arterial (data, cod_evento, cod_profissional, cod_pf, cod_historico, diastole, sistole, cod_proc_pa)
VALUES (@data2, @cod_evento2, @cod_profissional2, @cod_pf2, @tb_resultado_pf_anamnese, @diastole, @sistole, @cod_proc_pa)
INSERT INTO tb_resultado_glicemia_capilar (data, cod_evento, cod_profissional, cod_pf, cod_historico, glicemia, cod_proc_glicemia)
VALUES (@data3, @cod_evento3, @cod_profissional3, @cod_pf3, @tb_resultado_pf_anamnese, @glicemia, @cod_proc_glicemia);
END- Marcado como Resposta Wilson Boris quarta-feira, 7 de agosto de 2013 10:43
Todas as Respostas
-
Você deve dar um espacinho em todos INSERTS e VALUES Deixando assim :
comando = " INSERT INTO tb_resultado_pf_anamnese (data, cod_evento, cod_profissional, cod_pf, cod_tem_diabetes, cod_tem_familiares_diabeticos, cod_jejum)" + _ " VALUES (@Par1, @Par2, @Par3, @Par4, @Par5, @Par6, @Par7)" + _ " INSERT INTO tb_resultado_pf_pressao_arterial (data, cod_evento, cod_profissional, cod_pf, (SELECT IDENT_CURRENT('tb_resultado_pf_anamnese')), diastole, sistole, cod_proc_pa)" + _ " VALUES (@Par8, @Par9, @Par10, @Par11, @Par12, @Par13, @Par14, @Par15)" + _ " INSERT INTO tb_resultado_pf_glicemia_capilar (data, cod_evento, cod_profissional, cod_pf, (SELECT IDENT_CURRENT('tb_resultado_pf_anamnese')), glicemia, cod_proc_glicemia)" + _ " VALUES (@Par16, @Par17, @Par18, @Par19, @Par20, @Par21, @Par22);"
A diferença do meu para o seu é apenas os espacinhos nos INSERTS e VALUES.
Se lhe foi útil marque como resposta.
Davi Murilo Referência Principal : Jesus que ilumina minha mente.
Referência Profissonal : http://www.tidm.com.br- Editado Davi Murilo segunda-feira, 5 de agosto de 2013 12:54 Complemento
- Marcado como Resposta Wilson Boris quarta-feira, 7 de agosto de 2013 10:44
-
Achei é aqui ó :
"INSERT INTO tb_resultado_pf_pressao_arterial (data, cod_evento, cod_profissional, cod_pf, (SELECT IDENT_CURRENT('tb_resultado_pf_anamnese')), diastole, sistole, cod_proc_pa)" + _
Você não pode passar o SELECT IDENT_CURRENT , nos campos , somente nos VALUES .
ou seja essa parte tb_resultado_pf_pressao_arterial(aqui não pode ter funções apenas os campos da tabela)
VALUES (' Já aqui tudo bem');
Se lhe foi útil marque como resposta.
Davi Murilo Referência Principal : Jesus que ilumina minha mente.
Referência Profissonal : http://www.tidm.com.br- Editado Davi Murilo segunda-feira, 5 de agosto de 2013 13:22 c
- Marcado como Resposta Wilson Boris quarta-feira, 7 de agosto de 2013 10:44
-
A questão é os seus parametros. como já foi declarado valor no VALUES , e não apenas @AlgumaCoisa , o seu código diz que falta parametros . Verifique se você pode trocar o seu código SELECT IDENT_ ...... , por @Par13 e o próximo por @Par16 , porém no Add se sua LisArray como adcionar com o Código "SELECT IDENT_CURRENT('tabela')" , algo como
param.Add("SELECT IDENT_CURRENT('tabela')")
Espero ter ajudado.
Davi Murilo Referência Principal : Jesus que ilumina minha mente.
Referência Profissonal : http://www.tidm.com.br- Marcado como Resposta Wilson Boris quarta-feira, 7 de agosto de 2013 10:44
-
Boa tarde, meu nome é Davi blz rs, Então é seguinte eu não estou acostumado a usar parametros da forma que você fez , mas pelo o que eu entendeo é seguinte
Quando se tem algo asssim :
Dim Comando AS String = "INSERT Tab(A,B,C) VALUES (@A,@B,@C");
Significa que deve existir exatamente a mesma ordem de parametros como no exemplo :
Dim param As ArrayList = New ArrayList() param.Add('Valor A') param.Add('Valor B') param.Add('Valor C')
Porém na sua lógica de inserção deve ter examente esses parametros esperando para serem inseridos algo como :
Dim cmd As SqlCommand = New SqlCommand() cmd.Connection = cn ' Conexao banco cmd.CommandText = "Instrução SQL" cmd.Parameters.AddWithValue("@A",param[0]) cmd.Parameters.AddWithValue("@B",param[1]) cmd.Parameters.AddWithValue("@C",param[2]) cmd.ExecuteNonQuery()
Veja a sua classe Class2_ExecuteBD.Comando , provavelmente seus parametros do Command não estão de acordo.
Espero ter ajudado.
Davi Murilo Referência Principal : Jesus que ilumina minha mente.
Referência Profissonal : http://www.tidm.com.br- Editado Davi Murilo segunda-feira, 5 de agosto de 2013 15:41 C
- Marcado como Resposta Wilson Boris quarta-feira, 7 de agosto de 2013 10:44
-
Nossa que furada, desculpe-me Davi Murilo pela falha no nome.
Acho que estou chegando perto, o erro aparece de conversão, tentei param.Add(Convert.ToInt32("SELECT IDENT_CURRENT('tb_resultado_pf_anamnese')")) mas sem sucesso.
As tres camadas abaixo com o erro:
ERRO:
Falha ao converter o varchar valor 'SELECT IDENT_CURRENT('tb_resultado_pf_anamnese')' para o tipo de dados int.CAMADA VIEW
Dim aRET0 As ArrayList
aRET0 = novo_historico.novo_historico2(Label10.Text, DropDownList1_evento_ex.SelectedValue, Label6_cod_pf_login.Text, DropDownList6_nome.SelectedValue, RadioButtonList8_tem_diabetes.Text, RadioButtonList9_familia_dia.Text, RadioButtonList7_jejum.Text, TextBox23_diastolica.Text, TextBox22_sistolica.Text, 301100039, TextBox20_glicemia.Text, 214010015)
If Convert.ToInt32(aRET0(0)) >= 1 Then
Label1.Text = (String.Format("{0} Registro incluido com sucesso.", Convert.ToInt32(aRET0(0))))
End If
CAMADA MODEL
Imports System.Data.Common
Imports System.Data.SqlClient
Imports WRB.Data
Public Function novo_historico2(p_data, p_cod_evento, p_cod_profissional, p_cod_pf, p_cod_tem_diabetes, p_cod_tem_familiares_diabeticos, p_cod_jejum, p_diastole, p_sistole, p_cod_proc_pa, p_glicemia, p_cod_proc_glicemia) As ArrayList
Dim aDR As ArrayList = New ArrayList()
Dim comando As String
comando = "INSERT INTO tb_resultado_pf_anamnese (data, cod_evento, cod_profissional, cod_pf, cod_tem_diabetes, cod_tem_familiares_diabeticos, cod_jejum)" + _
" VALUES (@Par1, @Par2, @Par3, @Par4, @Par5, @Par6, @Par7)" + _
"INSERT INTO tb_resultado_pressao_arterial (data, cod_evento, cod_profissional, cod_pf, cod_historico, diastole, sistole, cod_proc_pa)" + _
" VALUES (@Par8, @Par9, @Par10, @Par11, @Par12, @Par13, @Par14, @Par15)" + _
"INSERT INTO tb_resultado_glicemia_capilar (data, cod_evento, cod_profissional, cod_pf, cod_historico, glicemia, cod_proc_glicemia)" + _
" VALUES (@Par16, @Par17, @Par18, @Par19, @Par20, @Par21, @Par22);"
Dim param As ArrayList = New ArrayList()
param.Add(p_data)
param.Add(p_cod_evento)
param.Add(p_cod_profissional)
param.Add(p_cod_pf)
param.Add(p_cod_tem_diabetes)
param.Add(p_cod_tem_familiares_diabeticos)
param.Add(p_cod_jejum)
param.Add(p_data)
param.Add(p_cod_evento)
param.Add(p_cod_profissional)
param.Add(p_cod_pf)
param.Add("SELECT IDENT_CURRENT('tb_resultado_pf_anamnese')")
param.Add(p_diastole)
param.Add(p_sistole)
param.Add(p_cod_proc_pa)
param.Add(p_data)
param.Add(p_cod_evento)
param.Add(p_cod_profissional)
param.Add("SELECT IDENT_CURRENT('tb_resultado_pf_anamnese')")
param.Add(p_cod_pf)
param.Add(p_glicemia)
param.Add(p_cod_proc_glicemia)
aDR = Class2_ExecuteBD.Comando(comando, param)
Return aDR
End Function
CAMADA DATA
Imports System.Data.SqlClient
Public Class Class2_ExecuteBD
Public Shared Function Comando(commando As String, param As ArrayList)
Dim retorno As ArrayList = New ArrayList()
Dim erro As Exception
Dim erromensagem As String = ""
Dim DT As DataTable = New DataTable()
Using CN As SqlConnection = New SqlConnection()
Try
CN.ConnectionString = My.Settings.cn1
Dim com As SqlCommand = New SqlCommand()
com.CommandText = commando
com.CommandType = CommandType.Text
Dim c As Integer
For Each item In param
c += 1
com.Parameters.Add(String.Format("@Par{0}", c), ClassData2_Banco.GetDBType(item.GetType())).Value = item
Next
com.Connection = CN
CN.Open()
Dim qtd As Integer = com.ExecuteNonQuery()
retorno.Add(qtd)
CN.Close()
Return retorno
Catch ex As InvalidCastException
erro = ex
erromensagem = "Erro de conversão de dados"
retorno.Add(0)
retorno.Add(erro)
retorno.Add(erromensagem)
Catch ex As SqlException
erro = ex
erromensagem = "Erro ao acessar o Banco de Dados"
retorno.Add(0)
retorno.Add(erro)
retorno.Add(erromensagem)
Catch ex As AccessViolationException
erro = ex
erromensagem = "Erro de Violação de acesso a BD"
retorno.Add(0)
retorno.Add(erro)
retorno.Add(erromensagem)
Catch ex As Exception
erro = ex
erromensagem = "Erro Generico não esperado"
retorno.Add(0)
retorno.Add(erro)
retorno.Add(erromensagem)
End Try
End Using
Return retorno
End Function
End Class
Imports System.Text
Imports System.Collections.Generic
Imports System.Linq
Public Class ClassData2_Banco
Public Shared Function GetDBType(theType As System.Type) As SqlDbType
Dim param As SqlParameter = New SqlParameter()
If theType.Name = "String" Then
param.SqlDbType = SqlDbType.VarChar
End If
If theType.Name = "Int" Or theType.Name = "Int16" Or theType.Name = "Int32" Then
param.SqlDbType = SqlDbType.Int
End If
If theType.Name = "DateTime" Then
param.SqlDbType = SqlDbType.Date
End If
If theType.Name = "boll" Then
param.SqlDbType = SqlDbType.Bit
End If
Return param.SqlDbType
End Function -
Boa tarde .
Olha na boa , mas o ideal para o seu código seria procedures, Pois o erro que dá é porque no final da passagem dos parametros seu INSERT lá no banco ficará com a linha "SELECT IDENT_CURRENT('tb_resultado_pf_anamnese')" Como se fosse um texto sendo que lá no banco ele espera um inteiro.
Pesquise sobre procedures de inserção e parâmetros , seu código ficará mais legível , rápido e seguro.
Davi Murilo Referência Principal : Jesus que ilumina minha mente.
Referência Profissonal : http://www.tidm.com.br- Marcado como Resposta Wilson Boris quarta-feira, 7 de agosto de 2013 10:44
-
Vou ter que sair agora , porém mais tarde eu entrarei de novo, caso você tenha skype o meu é davi.murilo, mais tarde por volta das 19:00 , 20:00 eu estarei no skype. Caso queira resolver isso entre lá e depois a gente coloca a solução aqui no forum blz.
Davi Murilo Referência Principal : Jesus que ilumina minha mente.
Referência Profissonal : http://www.tidm.com.br -
Bom troquei seu SQL e coloquei um comentário veja se lhe ajuda :
-- Você deve debugar pelo visual studio Cada paramentro que está sendo passando -- Pegar cada parametro e tentar rodar a procedure com esses parametros diretamente -- No banco , porque se assim for normal , aí podemos descartar o banco como causador -- do erro e se focar apenas na aplicação. -- ex : Na sua aplicação, lá tem um ArrayList , basta pegar tudo que está passando por ele -- e vincular a uma unica string a qual irá ser usada como paramentro unico diretamente no banco -- Seria algo : assim -- Dim TesteParametro = param[0] & "," & param[1] & "," & param[2] ' e assim por diante -- No final do debug nessa linha você terá os valores no Add Watch -- algo assim : 1,"nome","data" etc.. , basta pegar isso troca as aspas duplas por simples colocar -- um EXECUTE procedure 1,'nome','data' etc.. -- Tente ir debugando e principalmente tente entender o processo ALTER PROCEDURE [dbo].[spInsereAtendimento] -- Add the parameters for the stored procedure here @data As DateTime, @cod_evento As Integer, @cod_profissional As Integer, @cod_pf As Integer, @cod_tem_diabetes As Integer, @cod_tem_familiares_diabeticos As Integer, @cod_jejum As Integer, @diastole As Integer, @sistole As Integer, @cod_proc_pa As Integer, @glicemia As Integer, @cod_proc_glicemia As Integer AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; -- Insert statements for procedure here DECLARE @tb_resultado_pf_anamnese AS INT SET @tb_resultado_pf_anamnese = (SELECT IDENT_CURRENT('tb_resultado_pf_anamnese')) -- O Select Abaixo é apenas para você saber se realmente sua aplicação está passando todos -- Os parametros correto. Após resolver retirar o SELECT e o RETURN SELECT @data,@cod_evento,@cod_profissional,@cod_pf,@cod_tem_diabetes,@cod_tem_familiares_diabeticos, @cod_jejum,@diastole,@sistole,@cod_proc_pa,@glicemia,@cod_proc_glicemia RETURN -- Isso faz com que o restante do código abaixo não seja executado INSERT INTO tb_resultado_pf_anamnese (data, cod_evento, cod_profissional, cod_pf, cod_tem_diabetes, cod_tem_familiares_diabeticos, cod_jejum) VALUES (@data, @cod_evento, @cod_profissional, @cod_pf, @cod_tem_diabetes, @cod_tem_familiares_diabeticos, @cod_jejum) INSERT INTO tb_resultado_pressao_arterial (data, cod_evento, cod_profissional, cod_pf, cod_historico, diastole, sistole, cod_proc_pa) VALUES (@data, @cod_evento, @cod_profissional, @cod_pf, @tb_resultado_pf_anamnese, @diastole, @sistole, @cod_proc_pa) INSERT INTO tb_resultado_glicemia_capilar (data, cod_evento, cod_profissional, cod_pf, cod_historico, glicemia, cod_proc_glicemia) VALUES (@data, @cod_evento, @cod_profissional, @cod_pf,@tb_resultado_pf_anamnese, @glicemia, @cod_proc_glicemia); END
Davi Murilo Referência Principal : Jesus que ilumina minha mente.
Referência Profissonal : http://www.tidm.com.br- Marcado como Resposta Wilson Boris quarta-feira, 7 de agosto de 2013 10:43
-
Cara eu tô lá no skype : davi.murilo , se quiser entre lá.
Davi Murilo Referência Principal : Jesus que ilumina minha mente.
Referência Profissonal : http://www.tidm.com.br -
Não sei se compreendi, eu peguei os valores dos parâmetros no Visual Studio e impostei no comando da StoreProcedure, conforme abaixo e cliquei em executar. Na mensagem apareceu "Comando(s) concluído(s) com êxito.", porém verificando as tabelas reparo que nada foi inserido.
USE [SIADS_SQL]
GO
/****** Object: StoredProcedure [dbo].[spInsereAtendimento] Script Date: 05-08-2013 22:12:13 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[spInsereAtendimento]
-- Add the parameters for the stored procedure here
@data As DateTime,
@cod_evento As Integer,
@cod_profissional As Integer,
@cod_pf As Integer,
@cod_tem_diabetes As Integer,
@cod_tem_familiares_diabeticos As Integer,
@cod_jejum As Integer,
@diastole As Integer,
@sistole As Integer,
@cod_proc_pa As Integer,
@glicemia As Integer,
@cod_proc_glicemia As Integer
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
DECLARE @tb_resultado_pf_anamnese AS INT
SET @tb_resultado_pf_anamnese = (SELECT IDENT_CURRENT('tb_resultado_pf_anamnese'))
SELECT '8/5/2013''1','1','2107','3','2','1','70','100','301100039','103','214010015'
RETURN -- Isso faz com que o restante do código abaixo não seja executado
INSERT INTO tb_resultado_pf_anamnese (data, cod_evento, cod_profissional, cod_pf, cod_tem_diabetes, cod_tem_familiares_diabeticos, cod_jejum)
VALUES ('8/5/2013','1','1','2107','3','2','1')
INSERT INTO tb_resultado_pressao_arterial (data, cod_evento, cod_profissional, cod_pf, cod_historico, diastole, sistole, cod_proc_pa)
VALUES ('8/5/2013','1','1','2107',(SELECT IDENT_CURRENT('tb_resultado_pf_anamnese')),'70','100','301100039')
INSERT INTO tb_resultado_glicemia_capilar (data, cod_evento, cod_profissional, cod_pf, cod_historico, glicemia, cod_proc_glicemia)
VALUES ('8/5/2013','1','1','2107',(SELECT IDENT_CURRENT('tb_resultado_pf_anamnese')),'103','214010015');
END Obs.: o nome da StoreProcedure fica grifado "Nome de Objeto invalido" -
Pois via skype eu conseguirei te explicar melhor, senão esse post vai ficar cada vez maior.
Blz.
Davi Murilo Referência Principal : Jesus que ilumina minha mente.
Referência Profissonal : http://www.tidm.com.br- Marcado como Resposta Wilson Boris quarta-feira, 7 de agosto de 2013 10:43
-
-
Valeu gigante Davi pelo apoio através do Skype, assim minimizamos o espaço no forum e o código ficou bonito, rsrsrs, saliento a satisfação de apreender muito contigo. Abaixo o conhecimento para socializarmos. Muito obrigado professor.
CAMADA VIEW
Imports System.Data.Common
Imports System.Data.DataSet
Imports System.Web.UI.WebControls
Imports System.Data.SqlClient
Imports WRB.Model
Imports parametro.WRB.parametro
novo_historico.novo_historico_procedure(New AtendimentoPaciente() With {.Data = Label10.Text, .cod_evento = DropDownList1_evento_ex.SelectedValue, .cod_pf = Label6_cod_pf_login.Text, .cod_profissional = DropDownList6_nome.SelectedValue, .cod_tem_diabetes = RadioButtonList8_tem_diabetes.Text, .cod_tem_familiares_diabeticos = RadioButtonList9_familia_dia.Text, .cod_jejum = RadioButtonList7_jejum.Text, .diastole = TextBox23_diastolica.Text, .sistole = TextBox22_sistolica.Text, .cod_proc_pa = 301100039, .glicemia = TextBox20_glicemia.Text, .cod_proc_glicemia = 214010015})
Label1.Text = (String.Format("Registro incluido com sucesso."))
CAMADA MODEL
Imports System.Data.Common
Imports System.Data.SqlClient
Imports WRB.Data
Imports parametro.WRB.parametro
Public Sub novo_historico_procedure(AtendimentoPaciente As AtendimentoPaciente)
Class2_ExecuteBD_Procedure.InsereAtendimentoPaciente(AtendimentoPaciente)
End Sub
CAMADA DATA
Imports System.Data.SqlClient
Imports parametro.WRB.parametro
Public Class Class2_ExecuteBD_Procedure
Public Shared Function InsereAtendimentoPaciente(AtendimentoPaciente As AtendimentoPaciente)
Dim retorno As ArrayList = New ArrayList()
Dim erro As Exception
Dim erromensagem As String = ""
Dim DT As DataTable = New DataTable()
Using CN As SqlConnection = New SqlConnection()
Try
CN.ConnectionString = My.Settings.cn1
Dim com As SqlCommand = New SqlCommand()
com.CommandText = "spInsereAtendimento"
com.CommandType = CommandType.StoredProcedure
com.Parameters.AddWithValue("@data", AtendimentoPaciente.Data)
com.Parameters.AddWithValue("@cod_evento", AtendimentoPaciente.cod_evento)
com.Parameters.AddWithValue("@cod_profissional", AtendimentoPaciente.cod_profissional)
com.Parameters.AddWithValue("@cod_pf", AtendimentoPaciente.cod_pf)
com.Parameters.AddWithValue("@cod_tem_diabetes", AtendimentoPaciente.cod_tem_diabetes)
com.Parameters.AddWithValue("@cod_tem_familiares_diabeticos ", AtendimentoPaciente.cod_tem_familiares_diabeticos)
com.Parameters.AddWithValue("@cod_jejum ", AtendimentoPaciente.cod_jejum)
com.Parameters.AddWithValue("@data2", AtendimentoPaciente.Data)
com.Parameters.AddWithValue("@cod_evento2", AtendimentoPaciente.cod_evento)
com.Parameters.AddWithValue("@cod_profissional2", AtendimentoPaciente.cod_profissional)
com.Parameters.AddWithValue("@cod_pf2", AtendimentoPaciente.cod_pf)
com.Parameters.AddWithValue("@diastole", AtendimentoPaciente.diastole)
com.Parameters.AddWithValue("@sistole", AtendimentoPaciente.sistole)
com.Parameters.AddWithValue("@cod_proc_pa", AtendimentoPaciente.cod_proc_pa)
com.Parameters.AddWithValue("@cod_pf3", AtendimentoPaciente.cod_pf)
com.Parameters.AddWithValue("@data3 ", AtendimentoPaciente.Data)
com.Parameters.AddWithValue("@cod_evento3", AtendimentoPaciente.cod_evento)
com.Parameters.AddWithValue("@cod_profissional3", AtendimentoPaciente.cod_profissional)
com.Parameters.AddWithValue("@glicemia", AtendimentoPaciente.glicemia)
com.Parameters.AddWithValue("@cod_proc_glicemia ", AtendimentoPaciente.cod_proc_glicemia)
com.Connection = CN
CN.Open()
Dim qtd As Integer = com.ExecuteNonQuery()
retorno.Add(qtd)
CN.Close()
Return retorno
Catch ex As InvalidCastException
erro = ex
erromensagem = "Erro de conversão de dados"
retorno.Add(0)
retorno.Add(erro)
retorno.Add(erromensagem)
Catch ex As SqlException
erro = ex
erromensagem = "Erro ao acessar o Banco de Dados"
retorno.Add(0)
retorno.Add(erro)
retorno.Add(erromensagem)
Catch ex As AccessViolationException
erro = ex
erromensagem = "Erro de Violação de acesso a BD"
retorno.Add(0)
retorno.Add(erro)
retorno.Add(erromensagem)
Catch ex As Exception
erro = ex
erromensagem = "Erro Generico não esperado"
retorno.Add(0)
retorno.Add(erro)
retorno.Add(erromensagem)
End Try
End Using
Return retorno
End Function
End Class
Namespace
Namespace WRB.parametro
Public Class AtendimentoPaciente
Private _Data As DateTime
Public Property Data As DateTime
Get
Return _Data
End Get
Set(value As DateTime)
_Data = value
End Set
End Property
Private _cod_evento As Integer
Public Property cod_evento As Integer
Get
Return _cod_evento
End Get
Set(value As Integer)
_cod_evento = value
End Set
End Property
Private _cod_profissional As Integer
Public Property cod_profissional As Integer
Get
Return _cod_profissional
End Get
Set(value As Integer)
_cod_profissional = value
End Set
End Property
Private _cod_pf As Integer
Public Property cod_pf As Integer
Get
Return _cod_pf
End Get
Set(value As Integer)
_cod_pf = value
End Set
End Property
Private _cod_tem_diabetes As Integer
Public Property cod_tem_diabetes As Integer
Get
Return _cod_tem_diabetes
End Get
Set(value As Integer)
_cod_tem_diabetes = value
End Set
End Property
Private _cod_tem_familiares_diabeticos As Integer
Public Property cod_tem_familiares_diabeticos As Integer
Get
Return _cod_tem_familiares_diabeticos
End Get
Set(value As Integer)
_cod_tem_familiares_diabeticos = value
End Set
End Property
Private _cod_jejum As Integer
Public Property cod_jejum As Integer
Get
Return _cod_jejum
End Get
Set(value As Integer)
_cod_jejum = value
End Set
End Property
Private _diastole As Integer
Public Property diastole As Integer
Get
Return _diastole
End Get
Set(value As Integer)
_diastole = value
End Set
End Property
Private _sistole As Integer
Public Property sistole As Integer
Get
Return _sistole
End Get
Set(value As Integer)
_sistole = value
End Set
End Property
Private _cod_proc_pa As Integer
Public Property cod_proc_pa As Integer
Get
Return _cod_proc_pa
End Get
Set(value As Integer)
_cod_proc_pa = value
End Set
End Property
Private _glicemia As Integer
Public Property glicemia As Integer
Get
Return _glicemia
End Get
Set(value As Integer)
_glicemia = value
End Set
End Property
Private _cod_proc_glicemia As Integer
Public Property cod_proc_glicemia As Integer
Get
Return _cod_proc_glicemia
End Get
Set(value As Integer)
_cod_proc_glicemia = value
End Set
End Property
End Class
End Namespace
StoreProcedure
USE [SIADS_SQL]
GO
/****** Object: StoredProcedure [dbo].[spInsereAtendimento] Script Date: 07-08-2013 07:21:18 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[spInsereAtendimento]
-- Add the parameters for the stored procedure here
@data As DateTime,
@cod_evento As Integer,
@cod_profissional As Integer,
@cod_pf As Integer,
@cod_tem_diabetes As Integer,
@cod_tem_familiares_diabeticos As Integer,
@cod_jejum As Integer,
@data2 As DateTime,
@cod_evento2 As Integer,
@cod_profissional2 As Integer,
@cod_pf2 As Integer,
@diastole As Integer,
@sistole As Integer,
@cod_proc_pa As Integer,
@data3 As DateTime,
@cod_evento3 As Integer,
@cod_profissional3 As Integer,
@cod_pf3 As Integer,
@glicemia As Integer,
@cod_proc_glicemia As Integer
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
DECLARE @tb_resultado_pf_anamnese AS INT
SET @tb_resultado_pf_anamnese = (SELECT IDENT_CURRENT('tb_resultado_pf_anamnese'))
INSERT INTO tb_resultado_pf_anamnese (data, cod_evento, cod_profissional, cod_pf, cod_tem_diabetes, cod_tem_familiares_diabeticos, cod_jejum)
VALUES (@data, @cod_evento, @cod_profissional, @cod_pf, @cod_tem_diabetes, @cod_tem_familiares_diabeticos, @cod_jejum)
INSERT INTO tb_resultado_pressao_arterial (data, cod_evento, cod_profissional, cod_pf, cod_historico, diastole, sistole, cod_proc_pa)
VALUES (@data2, @cod_evento2, @cod_profissional2, @cod_pf2, @tb_resultado_pf_anamnese, @diastole, @sistole, @cod_proc_pa)
INSERT INTO tb_resultado_glicemia_capilar (data, cod_evento, cod_profissional, cod_pf, cod_historico, glicemia, cod_proc_glicemia)
VALUES (@data3, @cod_evento3, @cod_profissional3, @cod_pf3, @tb_resultado_pf_anamnese, @glicemia, @cod_proc_glicemia);
END- Marcado como Resposta Wilson Boris quarta-feira, 7 de agosto de 2013 10:43