Olá a todos. Mais uma vez necessito da ajuda de vocês no seguinte:
* Uso Access 2003
Tabelas: T15_Indicadores + T151_Compras
(Relacionamento um-para-vários)
Formulário: F15_Indicadores + F151_Compras
Campo mestre: CodIndicador – Campo filho: IDIndicador
Funciona assim:
1) Cada Indicador cadastrado convida pessoas para participar de um sistema de vendas. Então após fazer o cadastro desse convidado, o sistema fica aguardando o pagamento do mesmo para gerar uma comissão a ser paga ao Indicador em questão. No cadastro do Indicador tem o campo ‘LimiteNivelMaster’ (tipo número) que tem o valor como exemplo de 10 (como se fosse 10 créditos. Esse número pode variar) e o campo ‘LimiteLiberacao’ (tipo número), então a cada vez que um dos Convidados do Indicador faz o pagamento da Adesão no campo ‘DTPgAdesao’ (tipo Data) no evento “após atualizar” preciso que atualize o campo ‘LimiteLiberacao’ diminuindo do valor contido no campo ‘LimiteNivelMaster’ até o limite contido no campo ‘LimiteLiberacao’, e caso ultrapasse esse valor seja emitida uma mensagem no registro onde ocorra esse excedente: “Atenção! Limite de XX Créditos EXCEDIDO. Avisar ao Indicador!”, caso contrário informar a mensagem: “Registo atualizado com Sucesso no Cadastro do INDICADOR. A liberação foi feita Automaticamente !".
2) Também existe o campo ‘TipoPagamento’ (tipo texto) onde existem 3 opções: “1: Pendente/Aguarda – 2: Pagtº Liberado – 3: Pagtº Bloqueado”. O valor padrão é 1 (Pendente/Aguarda). Então também ainda no evento “após atualizar” do campo ‘DTPgAdesao’ quando o convidado fizer o pagamento, preciso que atualize o campo ‘TipoPagamento’ para o código 2 (Pagtº Liberado) até o limite contido no campo ‘LimiteLiberacoes’ que vai diminuindo conforme já dito acima. Caso exceda o número do Limite citado no campo ‘LimiteLiberacao’, emite a mensagem já citada anteriormente, e atualiza o campo ‘TipoPagamento’ para o código 3 (Pagtº Bloqueado).
3) Quando o convidado/indicador fizer uma nova compra através do subformulário ‘F151_Compras’ vinculado ao Formulário ‘F15_Indicadores’ (Ver relacionamento no início do tópico) no campo ‘DataCompra’ (Tabela: T151_Compras) no evento “após atualizar” que seja atualizado o Campo ‘LimiteLiberacao’ da Tabela ‘T15_Indicadores’ no Formulário ‘F15_Indicadores’ da seguinte forma: Soma mais 10 créditos (exemplo) à quantidade existente nesse campo, se for 05 com mais 10 passa a ser 15, e continua a mesma rotina acima; se for 0, passa a ser 10 e atualiza o campo ‘TipoPagamento’ de 3 (Pagtº Bloqueado) para 2 (Pagtº Liberado), caso tenha algum código nessa situação, e dentro da quantidade já atualizada, nesse exemplo de 15, então se existiam 12 com o código 3 (Pagtº Bloqueado), esses 12 ficam com o código 2 (Pagtº Liberado), e o campo ‘LimiteLiberacao’ fica atualizado com 03 créditos a favor do Indicador, e assim por diante.
4) Também existe o campo ‘PontosAcumulados’ (tipo número) que preciso que funcione assim: a cada pagamento feito no campo ‘DTPgAdesao’ por um convidado, esse campo soma mais 1 no cadastro do Indicador Master, independente se o pagamento está como Liberado ou Bloqueado, conforme rotina dos itens acima.
Importante: Informo que quando o convidado faz o 1º pagamento automaticamente ele torna-se um Indicador e fica atrelado a um Indicador Master que foi quem o convidou e pode convidar outras pessoas e fica sendo o Indicador Master desses seus convidados, então o cadastro é único para ambos (Indicador e Convidado), ou seja, na mesma Tabela ‘T15_Indicadores’ e Formulário ‘F15_Indicadores’ é feita toda a rotina acima, isto é, não existe uma tabela com relacionamento de um-para-vários, isto é, não tem um Indicador com vários Convidados, tentei fazer dessa forma, mas ficou mais complicado, e dessa forma como ficou satisfatória para o que eu pretendia; pois cada convidado ao tornar-se Indicador tem um Indicador Master no seu cadastro. Espero tenham entendido as questões acima. Fiz algumas buscas nesse site e fiz o seguinte com relação ao item 1:
Private Sub DTPgAdesao_AfterUpdate()
On Error GoTo Err_DTPgAdesao_Click
Me!Status = "2" 'Ativo: Adesão paga
Me!DTValidade = DTPgAdesao + 365 'Conta 01 ano de validade
Me!DTLimitePg = DTPgAdesao + 30 'Pagto com 30 dias de limite ao Master, após pagamento do Convidado
If TipoAdesao = 3 Then 'CONVIDADO
Me!TipoAdesao = 4 'PASSA A SER INDICADOR
Beep
MsgBox "O CONVIDADO tornou-se INDICADOR e ficou Ativo no Sistema!!", vbCritical, "Sistema informa"
End If
If IDProduto = 1 Then
ValCom = ValNivel1 * ComMasterA / 100 'Paga Comissão ao Master
Exit Sub
End If
Me.LimiteLiberacao.Requery
Me.TipoPagamento.SetFocus
Teste 1: 'CurrentDb.Execute "UPDATE T15_Indicadores set [T15_Indicadores].[LimiteLiberacao] =" & Me![LimiteLiberacao] - 1 & ", WHERE Codigo = " & Me.CodIndicador & ";"
Teste 2: 'CurrentDb.Execute "UPDATE T15_Indicadores SET LimiteLiberacao= -1 WHERE Codigo=" & CodIndicador
Teste 3: ‘CurrentDb.Execute "UPDATE T15_Indicadores SET [T15_Indicadores].[LimiteLiberacao] =" - 1 'Comando SQL da Consulta de Atualização do Teste 4 abaixo:
PS: além dos comandos acima testados individualmente com cada um por vez, que não funcionaram, não emitindo nenhuma mensagem de erro, mas também não atualizando o campo pretendido, usei uma Macro (Teste 4) executando uma Consulta de atualização (comando abaixo) que funciona, mas atualiza todos os registros do campo ‘LimiteLiberacoes’ da Tabela ‘T15_Indicadores’ , ou seja, não serve pois preciso apenas atualizar o registro atual no campo pretendido, conforme item 1 acima.
Teste 4: 'DoCmd.RunMacro "M01_Diversas.LiberaPagto" 'Libera Pagto ao Master após pagamento do Convidado
MsgBox "Registo atualizado com Sucesso no Cadastro do INDICADOR." & vbCr & "A liberação foi feita automaticamente !", vbInformation
Exit_DTPgAdesao_Click:
Exit Sub
Err_DTPgAdesao_Click:
Resume Exit_DTPgAdesao_Click
End Sub
Com relação aos itens 2, 3 e 4 estou tentando fazer, mas também encontro dificuldades, pois até então não havia feito nada parecido, porisso recorro aos senhores mais uma vez, agradecendo de antemão a atenção e ajuda.
* Uso Access 2003
Tabelas: T15_Indicadores + T151_Compras
(Relacionamento um-para-vários)
Formulário: F15_Indicadores + F151_Compras
Campo mestre: CodIndicador – Campo filho: IDIndicador
Funciona assim:
1) Cada Indicador cadastrado convida pessoas para participar de um sistema de vendas. Então após fazer o cadastro desse convidado, o sistema fica aguardando o pagamento do mesmo para gerar uma comissão a ser paga ao Indicador em questão. No cadastro do Indicador tem o campo ‘LimiteNivelMaster’ (tipo número) que tem o valor como exemplo de 10 (como se fosse 10 créditos. Esse número pode variar) e o campo ‘LimiteLiberacao’ (tipo número), então a cada vez que um dos Convidados do Indicador faz o pagamento da Adesão no campo ‘DTPgAdesao’ (tipo Data) no evento “após atualizar” preciso que atualize o campo ‘LimiteLiberacao’ diminuindo do valor contido no campo ‘LimiteNivelMaster’ até o limite contido no campo ‘LimiteLiberacao’, e caso ultrapasse esse valor seja emitida uma mensagem no registro onde ocorra esse excedente: “Atenção! Limite de XX Créditos EXCEDIDO. Avisar ao Indicador!”, caso contrário informar a mensagem: “Registo atualizado com Sucesso no Cadastro do INDICADOR. A liberação foi feita Automaticamente !".
2) Também existe o campo ‘TipoPagamento’ (tipo texto) onde existem 3 opções: “1: Pendente/Aguarda – 2: Pagtº Liberado – 3: Pagtº Bloqueado”. O valor padrão é 1 (Pendente/Aguarda). Então também ainda no evento “após atualizar” do campo ‘DTPgAdesao’ quando o convidado fizer o pagamento, preciso que atualize o campo ‘TipoPagamento’ para o código 2 (Pagtº Liberado) até o limite contido no campo ‘LimiteLiberacoes’ que vai diminuindo conforme já dito acima. Caso exceda o número do Limite citado no campo ‘LimiteLiberacao’, emite a mensagem já citada anteriormente, e atualiza o campo ‘TipoPagamento’ para o código 3 (Pagtº Bloqueado).
3) Quando o convidado/indicador fizer uma nova compra através do subformulário ‘F151_Compras’ vinculado ao Formulário ‘F15_Indicadores’ (Ver relacionamento no início do tópico) no campo ‘DataCompra’ (Tabela: T151_Compras) no evento “após atualizar” que seja atualizado o Campo ‘LimiteLiberacao’ da Tabela ‘T15_Indicadores’ no Formulário ‘F15_Indicadores’ da seguinte forma: Soma mais 10 créditos (exemplo) à quantidade existente nesse campo, se for 05 com mais 10 passa a ser 15, e continua a mesma rotina acima; se for 0, passa a ser 10 e atualiza o campo ‘TipoPagamento’ de 3 (Pagtº Bloqueado) para 2 (Pagtº Liberado), caso tenha algum código nessa situação, e dentro da quantidade já atualizada, nesse exemplo de 15, então se existiam 12 com o código 3 (Pagtº Bloqueado), esses 12 ficam com o código 2 (Pagtº Liberado), e o campo ‘LimiteLiberacao’ fica atualizado com 03 créditos a favor do Indicador, e assim por diante.
4) Também existe o campo ‘PontosAcumulados’ (tipo número) que preciso que funcione assim: a cada pagamento feito no campo ‘DTPgAdesao’ por um convidado, esse campo soma mais 1 no cadastro do Indicador Master, independente se o pagamento está como Liberado ou Bloqueado, conforme rotina dos itens acima.
Importante: Informo que quando o convidado faz o 1º pagamento automaticamente ele torna-se um Indicador e fica atrelado a um Indicador Master que foi quem o convidou e pode convidar outras pessoas e fica sendo o Indicador Master desses seus convidados, então o cadastro é único para ambos (Indicador e Convidado), ou seja, na mesma Tabela ‘T15_Indicadores’ e Formulário ‘F15_Indicadores’ é feita toda a rotina acima, isto é, não existe uma tabela com relacionamento de um-para-vários, isto é, não tem um Indicador com vários Convidados, tentei fazer dessa forma, mas ficou mais complicado, e dessa forma como ficou satisfatória para o que eu pretendia; pois cada convidado ao tornar-se Indicador tem um Indicador Master no seu cadastro. Espero tenham entendido as questões acima. Fiz algumas buscas nesse site e fiz o seguinte com relação ao item 1:
Private Sub DTPgAdesao_AfterUpdate()
On Error GoTo Err_DTPgAdesao_Click
Me!Status = "2" 'Ativo: Adesão paga
Me!DTValidade = DTPgAdesao + 365 'Conta 01 ano de validade
Me!DTLimitePg = DTPgAdesao + 30 'Pagto com 30 dias de limite ao Master, após pagamento do Convidado
If TipoAdesao = 3 Then 'CONVIDADO
Me!TipoAdesao = 4 'PASSA A SER INDICADOR
Beep
MsgBox "O CONVIDADO tornou-se INDICADOR e ficou Ativo no Sistema!!", vbCritical, "Sistema informa"
End If
If IDProduto = 1 Then
ValCom = ValNivel1 * ComMasterA / 100 'Paga Comissão ao Master
Exit Sub
End If
Me.LimiteLiberacao.Requery
Me.TipoPagamento.SetFocus
Teste 1: 'CurrentDb.Execute "UPDATE T15_Indicadores set [T15_Indicadores].[LimiteLiberacao] =" & Me![LimiteLiberacao] - 1 & ", WHERE Codigo = " & Me.CodIndicador & ";"
Teste 2: 'CurrentDb.Execute "UPDATE T15_Indicadores SET LimiteLiberacao= -1 WHERE Codigo=" & CodIndicador
Teste 3: ‘CurrentDb.Execute "UPDATE T15_Indicadores SET [T15_Indicadores].[LimiteLiberacao] =" - 1 'Comando SQL da Consulta de Atualização do Teste 4 abaixo:
PS: além dos comandos acima testados individualmente com cada um por vez, que não funcionaram, não emitindo nenhuma mensagem de erro, mas também não atualizando o campo pretendido, usei uma Macro (Teste 4) executando uma Consulta de atualização (comando abaixo) que funciona, mas atualiza todos os registros do campo ‘LimiteLiberacoes’ da Tabela ‘T15_Indicadores’ , ou seja, não serve pois preciso apenas atualizar o registro atual no campo pretendido, conforme item 1 acima.
Teste 4: 'DoCmd.RunMacro "M01_Diversas.LiberaPagto" 'Libera Pagto ao Master após pagamento do Convidado
MsgBox "Registo atualizado com Sucesso no Cadastro do INDICADOR." & vbCr & "A liberação foi feita automaticamente !", vbInformation
Exit_DTPgAdesao_Click:
Exit Sub
Err_DTPgAdesao_Click:
Resume Exit_DTPgAdesao_Click
End Sub
Com relação aos itens 2, 3 e 4 estou tentando fazer, mas também encontro dificuldades, pois até então não havia feito nada parecido, porisso recorro aos senhores mais uma vez, agradecendo de antemão a atenção e ajuda.