none
SELECT IDENT_CURRENT RRS feed

  • 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 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, 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
    segunda-feira, 5 de agosto de 2013 12:01

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
    segunda-feira, 5 de agosto de 2013 12:52
  • 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
    segunda-feira, 5 de agosto de 2013 13:21
  • 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
    segunda-feira, 5 de agosto de 2013 14:28
  • 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
    segunda-feira, 5 de agosto de 2013 15:40
  • 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
    segunda-feira, 5 de agosto de 2013 17:29
  • 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
    terça-feira, 6 de agosto de 2013 00:02
  • 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
    terça-feira, 6 de agosto de 2013 01:42
  • 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
    quarta-feira, 7 de agosto de 2013 10:42

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
    segunda-feira, 5 de agosto de 2013 12:52
  • 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
    segunda-feira, 5 de agosto de 2013 13:21
  • 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
    segunda-feira, 5 de agosto de 2013 14:28
  • 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
    segunda-feira, 5 de agosto de 2013 15:40
  • 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

    segunda-feira, 5 de agosto de 2013 17:14
  • 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
    segunda-feira, 5 de agosto de 2013 17:29
  • 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

    segunda-feira, 5 de agosto de 2013 20:59
  • 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
    terça-feira, 6 de agosto de 2013 00:02
  • 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

    terça-feira, 6 de agosto de 2013 01:38
  • 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"

    terça-feira, 6 de agosto de 2013 01:41
  • 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
    terça-feira, 6 de agosto de 2013 01:42
  • Desculpe-me, não li retorno ontem, agora ativei meu Skipe wilson.braun1.
    terça-feira, 6 de agosto de 2013 12:33
  • 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
    quarta-feira, 7 de agosto de 2013 10:42