MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


2 participantes

    [Resolvido]Como agrupar em apenas uma linha, essa instrução em SQL

    Silvio
    Silvio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 5120
    Registrado : 20/04/2011

    [Resolvido]Como agrupar em apenas uma linha, essa instrução em SQL Empty Como agrupar em apenas uma linha, essa instrução em SQL

    Mensagem  Silvio 24/1/2013, 19:38

    Boa tarde a todos.

    Depois de muito pestanejar, beber bastante café e claro alguns cigarros....chequei ao seguinte código:


    Private Sub bt_salvar_Click()
    Dim strSQL As String, strSQL1 As String, strSQL2 As String, strSQL3 As String
    If MsgBox(" Deseja Cadastrar essa Conta a Receber ?", vbOKCancel + vbDefaultButton1 + vbInformation, "FÁSER CAR") = vbOK Then



    'Se for Sim, então faz um Insert na tabela baixacr, somente aos campos correspondentes
    If IsNull(Me.data1) Or IsNull(Me.valor1) Then Exit Sub
    strSQL1 = "INSERT INTO baixaCR (Idcliente,Nome,Data1,Valor1) Values (" & Me.Idcliente.Value & ",'" & Me.Nome.Value & "', #" & Format(data1, "mm\/dd\/yyyy") & "#, " & Me.valor1.Value & ")"
    DoCmd.RunCommand acCmdSaveRecord
    CurrentDb.Execute strSQL

    If IsNull(Me.data2) Or IsNull(Me.valor2) Then Exit Sub
    strSQL1 = "INSERT INTO baixaCR (Idcliente,Nome,Data2,Valor2) Values (" & Me.Idcliente.Value & ",'" & Me.Nome.Value & "', #" & Format(data2, "mm\/dd\/yyyy") & "#, " & Me.valor2.Value & ")"
    DoCmd.RunCommand acCmdSaveRecord
    CurrentDb.Execute strSQL1

    If IsNull(Me.data3) Or IsNull(Me.valor3) Then Exit Sub
    strSQL2 = "INSERT INTO baixaCR (Idcliente,Nome,Data3,Valor3) Values (" & Me.Idcliente.Value & ",'" & Me.Nome.Value & "', #" & Format(data3, "mm\/dd\/yyyy") & "#, " & Me.valor3.Value & ")"
    DoCmd.RunCommand acCmdSaveRecord
    CurrentDb.Execute strSQL2


    If IsNull(Me.data4) Or IsNull(Me.valor4) Then Exit Sub
    strSQL3 = "INSERT INTO baixaCR (Idcliente,Nome,Data4,Valor4) Values (" & Me.Idcliente.Value & ",'" & Me.Nome.Value & "', #" & Format(data4, "mm\/dd\/yyyy") & "#, " & Me.valor4.Value & ")"
    DoCmd.RunCommand acCmdSaveRecord
    CurrentDb.Execute strSQL3




    DoCmd.RunCommand acCmdSaveRecord
    DoCmd.RunCommand acCmdRefresh
    DoCmd.GoToRecord , , acNewRec


    DoCmd.Save
    DoCmd.RunCommand acCmdRefresh

    MsgBox " Cadastro de Conta a Receber.... salvo com sucesso !", vbOKOnly, "FÁSER CAR"
    End If

    End Sub


    Só que o mesmo esta muito gigante ! Alguém conhece alguma forma de deixar ele mais simplificado ?

    Ou seja, ele vai ser exportado para uma tabela e do jeito que se encontra, está gerando um registo para cada data/valor. Data2 e valor1 é um registro para o cliente. Data2 e valor2 é outro registro para o mesmo. E ei tenho um formulário com todas as data e valores para facilitar a baixa do pagamento. Da maneira que está, se o cliente fizer em 90dd para pagar, aparecerá 4 vezes o cliente, e para cada dia um registro.

    Gostaria eu, de que fosse para um único registro na tabela, com a data1, data2, data3,data4 e valor1,valor2,valor3 e valor4 para o mesmo cliente.

    Grato a todos.


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    www.maximoaccess.com/t860-resolucao-de-topicos

    "Quase tudo é possível quando se tem determinação e força de vontade. Não desista tão rápido."
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8498
    Registrado : 05/11/2009

    [Resolvido]Como agrupar em apenas uma linha, essa instrução em SQL Empty Re: [Resolvido]Como agrupar em apenas uma linha, essa instrução em SQL

    Mensagem  Alexandre Neves 24/1/2013, 21:21

    Boa noite, Sílvio
    Já tentou
    strSQL1 = "INSERT INTO baixaCR (Idcliente,Nome,Data1,Valor1,Data2,Valor2,Data3,Valor3,Data4,Valor4) Values (" & Me.Idcliente.Value & ",'" & Me.Nome.Value & "', #" & Format(data1, "mm\/dd\/yyyy") & "#, " & Me.valor1.Value & ", #" & Format(data2, "mm\/dd\/yyyy") & "#, " & Me.valor2.Value & ", #" & Format(data3, "mm\/dd\/yyyy") & "#, " & Me.valor3.Value & ", #" & Format(data4, "mm\/dd\/yyyy") & "#, " & Me.valor4.Value & ")"
    DoCmd.RunCommand acCmdSaveRecord
    CurrentDb.Execute strSQL

    currentdb.execute "DELETE * FROM baixaCR WHERE IsNull(Data1);"


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    Silvio
    Silvio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 5120
    Registrado : 20/04/2011

    [Resolvido]Como agrupar em apenas uma linha, essa instrução em SQL Empty Re: [Resolvido]Como agrupar em apenas uma linha, essa instrução em SQL

    Mensagem  Silvio 25/1/2013, 10:24

    Bom dia Alexandre, grato por me ajudar nessa duvida.

    O código funciona perfeitamente para exportar quando é pago em 4 vezes (entra+30dd+60dd+90dd).

    Porém, quando é feito apenas a vista ou entr+30dd ou entr+30dd+60dd gera erro.

    A linha que gera esse erro se encontra em vermelho no código abaixo:

    Private Sub bt_salvar_Click()
    Dim strSQL As String

    If MsgBox(" Deseja Cadastrar essa Conta a Receber ?", vbOKCancel + vbDefaultButton1 + vbInformation, "FÁSER CAR") = vbOK Then

    strSQL = "INSERT INTO baixaCR (Idcliente,Nome,Data1,Valor1,Data2,Valor2,Data3,Valor3,Data4,Valor4) Values (" & Me.Idcliente.Value & ",'" & Me.Nome.Value & "', #" & Format(data1, "mm\/dd\/yyyy") & "#, " & Me.valor1.Value & ", #" & Format(data2, "mm\/dd\/yyyy") & "#, " & Me.valor2.Value & ", #" & Format(data3, "mm\/dd\/yyyy") & "#, " & Me.valor3.Value & ", #" & Format(data4, "mm\/dd\/yyyy") & "#, " & Me.valor4.Value & ")"

    DoCmd.RunCommand acCmdSaveRecord
    CurrentDb.Execute strSQL
    CurrentDb.Execute "DELETE * FROM contaareceber WHERE IsNull(Data1);"
    DoCmd.RunCommand acCmdSaveRecord
    DoCmd.RunCommand acCmdRefresh
    MsgBox " Cadastro de Conta a Receber.... salvo com sucesso !", vbOKOnly, "FÁSER CAR"
    DoCmd.GoToRecord , , acNewRec
    End If
    End Sub

    Pergunto-te, será que vou ter que declarar uma variável para cada forma de pagamento ? ( entr / entr+30dd / entr+30dd+60dd) ?

    Alterei a tabela aqui, pois quando se cadastrada a conta, preciso que seja deletada da tabela contareceber.
    CurrentDb.Execute "DELETE * FROM contaareceber WHERE IsNull(Data1);"


    Em Anexo, para melhor entendimento teu parte do projeto que esta emperrado.

    Abraços e muito obrigado pela força.


    Última edição por Silvio em 28/1/2013, 20:59, editado 1 vez(es)


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    www.maximoaccess.com/t860-resolucao-de-topicos

    "Quase tudo é possível quando se tem determinação e força de vontade. Não desista tão rápido."
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8498
    Registrado : 05/11/2009

    [Resolvido]Como agrupar em apenas uma linha, essa instrução em SQL Empty Re: [Resolvido]Como agrupar em apenas uma linha, essa instrução em SQL

    Mensagem  Alexandre Neves 25/1/2013, 21:46

    Sílvio,
    Tente assim
    Private Sub bt_salvar_Click()
    Dim strCampos As String,strValores as string

    If MsgBox(" Deseja Cadastrar essa Conta a Receber ?", vbOKCancel + vbDefaultButton1 + vbInformation, "FÁSER CAR") = vbOK Then
    If IsNull(Me.data1) Or IsNull(Me.valor1) Then Exit Sub
    If IsNull(Me.data2) Or IsNull(Me.valor2) Then
    strCampos=",Data2,Valor2"
    strValores=", #" & Format(data2, "mm\/dd\/yyyy") & "#, " & Me.valor2.Value
    End If
    If IsNull(Me.data3) Or IsNull(Me.valor3) Then
    strCampos=strcampos & ",Data3,Valor3"
    strValores=strValores & ", #" & Format(data3, "mm\/dd\/yyyy") & "#, " & Me.valor3.Value
    End If
    If IsNull(Me.data4) Or IsNull(Me.valor4) Then
    strCampos=strcampos & ",Data4,Valor4"
    strValores=strValores & ", #" & Format(data4, "mm\/dd\/yyyy") & "#, " & Me.valor4.Value
    End If

    DoCmd.RunCommand acCmdSaveRecord
    CurrentDb.Execute "INSERT INTO baixaCR (Idcliente,Nome,Data1,Valor1" & strCampos &") Values (" & Me.Idcliente.Value & ",'" & Me.Nome.Value & "', #" & Format(data1, "mm\/dd\/yyyy") & "#, " & Me.valor1.Value & "" & strValores &")"

    CurrentDb.Execute "DELETE * FROM contaareceber WHERE IsNull(Data1);"
    DoCmd.RunCommand acCmdSaveRecord
    DoCmd.RunCommand acCmdRefresh
    MsgBox " Cadastro de Conta a Receber.... salvo com sucesso !", vbOKOnly, "FÁSER CAR"
    DoCmd.GoToRecord , , acNewRec
    End If
    End Sub
    Abraços,


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    Silvio
    Silvio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 5120
    Registrado : 20/04/2011

    [Resolvido]Como agrupar em apenas uma linha, essa instrução em SQL Empty Re: [Resolvido]Como agrupar em apenas uma linha, essa instrução em SQL

    Mensagem  Silvio 28/1/2013, 09:50

    Bom dia Alexandre.

    Mais uma vez agradeço a ti !

    Alexandre, essa linha abaixo:
    CurrentDb.Execute "INSERT INTO baixaCR (Idcliente,Nome,Data1,Valor1" & strCampos &") Values (" & Me.Idcliente.Value & ",'" & Me.Nome.Value & "', #" & Format(data1, "mm\/dd\/yyyy") & "#, " & Me.valor1.Value & "" & strValores &")"....executa apenas para o campo a vista/entrada. Os demais (30/60/90dd) não estão indo quando o cliente faz em:
    a- entr + 30dd
    b- entr + 30dd +60dd
    c- entr + 30dd + 60dd + 90dd

    Não sei se vou escrever alguma besteira, pois em SQL ainda estou a caminhar, não seria o caso de fazer um UPDATE nos outros campos ?

    Ou eu repito essa mesma linha nos demais campos ?

    Abraços cordiais a ti.


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    www.maximoaccess.com/t860-resolucao-de-topicos

    "Quase tudo é possível quando se tem determinação e força de vontade. Não desista tão rápido."
    Silvio
    Silvio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 5120
    Registrado : 20/04/2011

    [Resolvido]Como agrupar em apenas uma linha, essa instrução em SQL Empty Re: [Resolvido]Como agrupar em apenas uma linha, essa instrução em SQL

    Mensagem  Silvio 28/1/2013, 20:59

    Bom...... consegui resolver o meu problema e assim consegui colocar tudo em apenas um único registro em outra tabela.



    Grato sou a todos que puderam me dar uma força.


    Última edição por Silvio em 28/1/2013, 23:31, editado 1 vez(es)


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    www.maximoaccess.com/t860-resolucao-de-topicos

    "Quase tudo é possível quando se tem determinação e força de vontade. Não desista tão rápido."
    Silvio
    Silvio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 5120
    Registrado : 20/04/2011

    [Resolvido]Como agrupar em apenas uma linha, essa instrução em SQL Empty Re: [Resolvido]Como agrupar em apenas uma linha, essa instrução em SQL

    Mensagem  Silvio 28/1/2013, 21:00

    ops.......

    resolvido.


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    www.maximoaccess.com/t860-resolucao-de-topicos

    "Quase tudo é possível quando se tem determinação e força de vontade. Não desista tão rápido."

    Conteúdo patrocinado


    [Resolvido]Como agrupar em apenas uma linha, essa instrução em SQL Empty Re: [Resolvido]Como agrupar em apenas uma linha, essa instrução em SQL

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 23/11/2024, 07:58