CADASTRO ESTRANHO
Pessoal, estou fazendo uma improvisação tecnica para fazer uma função.
bom, gostaria de saber se tem como eu fazer esta rotina de uma forma diferente,
Ex.
Ao fazer um cadastro. Verifico se ele já existe. se existir efetuo a atualização senão efetuo o cadastro.. na rotina acima fiz de um jeito muito estranho!!! gostaria de saber se alguem sabe de um outro jeito menos feio?
Citação:
If txtCodigo = [Ô][Ô] Then
PF_VERIFICACODIGO
varcontrole = [Ô]GRAVAR[Ô]
Else
Set RS = Conexao.Execute([Ô]SELECT * FROM DIA WHERE CODIGO=[Ô] & txtCodigo)
If RS.RecordCount = 0 Then
varcontrole = [Ô]GRAVAR[Ô]
Else
varcontrole = [Ô]EDITAR[Ô]
End If
End If
If varcontrole = [Ô]GRAVAR[Ô] Then
SQL = [Ô]SELECT * FROM DIA [Ô]
Else
SQL = [Ô]SELECT * FROM DIA WHERE CODIGO=[Ô] & txtCodigo
End If
Conecta True
Set RS = New ADODB.Recordset
RS.Open SQL, Conexao, adOpenDynamic, adLockPessimistic
If varcontrole = [Ô]GRAVAR[Ô] Then RS.AddNew
RS!CODIGO = txtCodigo
RS!nome = txtNome
RS!cidade = txtCidade
RS!sobrenome = txtSobrenome
RS!endereco = txtEndereco
RS.Update
bom, gostaria de saber se tem como eu fazer esta rotina de uma forma diferente,
Ex.
Ao fazer um cadastro. Verifico se ele já existe. se existir efetuo a atualização senão efetuo o cadastro.. na rotina acima fiz de um jeito muito estranho!!! gostaria de saber se alguem sabe de um outro jeito menos feio?
SUPERFOR é assim vc tem que tomar cuidado com isso, tipo vc vai cadastrar e se ja existir apenas atualizar, isso pode lhe gerar problemas e se vc não quiser atualizar o registro, ou se não for para atualizar o registro?
então faça o seguinte se vc digitar um código carregue os dados nos campos, dai vc ativa o botão para alterar pu excluir, no caso do código não existir, vc destavia o alterar e o excluir e ativa o botão salvar esta é amaneira mais segura e correta
então faça o seguinte se vc digitar um código carregue os dados nos campos, dai vc ativa o botão para alterar pu excluir, no caso do código não existir, vc destavia o alterar e o excluir e ativa o botão salvar esta é amaneira mais segura e correta
não tem como, meus clietes de um sistema antigo meu já são acostumados desta maneira.. estou montando este novo apenas para ver o mysql.. to tendo algumas duvidas...
antigamente eu usaria o
do jeito acima é um bom jeito? teria algo mais facil... ? rs
antigamente eu usaria o
Citação:se eu encontrasse o registro alterava senao adicionava..findfirst
do jeito acima é um bom jeito? teria algo mais facil... ? rs
UPGRADE filho é o que posso te dizer, então uma explicação superficial
suponha que vc possua a seguinte tabela com os seguintes dados
cod | nome |nascimento
1 | Marcelo |25/07/1972
2 |João |03/08/1983
agora imagine um form com os seguintes texbox (codigo, nome, nascimento)
e 04 botões (novo, salvar, alterar, excluir)
o botão novo vai estar sempre ativo, agora o botão salvar estará desativado quando os botões alterar excluir estiverem ativados, e vice versa.
então no load do form vc ativa SALVAR, e desativa ALTERAR e EXCLUIR.
se vc digitar no campo txtcodigo um codigo existente este é carregado nos campos, e o botão SALVAR destativa, e ATERAR e EXCLUIR ativam.
e os codigos basicos para isto seriam
e é isso
suponha que vc possua a seguinte tabela com os seguintes dados
cod | nome |nascimento
1 | Marcelo |25/07/1972
2 |João |03/08/1983
agora imagine um form com os seguintes texbox (codigo, nome, nascimento)
e 04 botões (novo, salvar, alterar, excluir)
o botão novo vai estar sempre ativo, agora o botão salvar estará desativado quando os botões alterar excluir estiverem ativados, e vice versa.
então no load do form vc ativa SALVAR, e desativa ALTERAR e EXCLUIR.
se vc digitar no campo txtcodigo um codigo existente este é carregado nos campos, e o botão SALVAR destativa, e ATERAR e EXCLUIR ativam.
e os codigos basicos para isto seriam
[ô] saber se um arquivo existe
SQL = [Ô]SELECT * FROM tabela WHERE cod = [Ô] & txtcodigo.text
Set RS = Conexao.Execute(SQL)
If Not (RS.BOF And RS.EOF) Then
txtCodigo.Text = RS!Cod
txtNome.Text = RS!Nome
txtNascimento.Text = RS!Nascimento
End IF
[ô]botão salvar
Conexao.execute ([Ô]INSERT INTO tabela (cod,nome,nascimento) VALUES ([Ô] & txtCodigo.Text & [Ô],[ô][Ô] & txtNome.Text & [Ô][ô],#[Ô] & Format(txtnascimento,[Ô]mm/dd/yyyy[Ô]) & [Ô]#)
[ô] botão alterar
Conexao.Execute([Ô]UPDATE tabela SET nome=[ô][Ô] & txtNome.text & [Ô][ô],nascimento =#[Ô] & Format(txtnascimento,[Ô]mm/dd/yyyy[Ô]) & [Ô]# WHERE cod = [Ô] & txtCodigo.Text )
[ô] botão excluir
Conexao.Execute([Ô]DELETE FROM tabela WHERE cod=[Ô] & txtCodigo.Text)
e é isso
Cara as vezes eu faço assim
[Ô]select * from cliente where codigo = [Ô] & txtcodigo
if ds.eof then
ds.addnew
end if
ds!campo1 = txtcampo1
ds!campo2 = txtcampo2
ds.update
O findfirst com ADO nao existe. No lugar voce faz assim
ds.movefirst
ds.find [Ô]campo=[Ô] & parametro
if ds.eof then [ô] eof e nao nomatch
else
end if
Porem o jeito mais correto é dar um select mesmo. Espero ter ajudado
[Ô]select * from cliente where codigo = [Ô] & txtcodigo
if ds.eof then
ds.addnew
end if
ds!campo1 = txtcampo1
ds!campo2 = txtcampo2
ds.update
O findfirst com ADO nao existe. No lugar voce faz assim
ds.movefirst
ds.find [Ô]campo=[Ô] & parametro
if ds.eof then [ô] eof e nao nomatch
else
end if
Porem o jeito mais correto é dar um select mesmo. Espero ter ajudado
Já eu faço assim:
no botão alterar:
mode = [Ô]alterar[Ô]
[ô]habilita todas texts e etc..
no botão novo:
mode = [Ô]novo[Ô]
[ô]habilita também
no botão gravar:
if mode = [Ô]novo[Ô] then
rs.addnew
atualizaCampos
rs.update
elseif mode = [Ô]alterar[Ô] then
rs.find [Ô]cod = [ô][Ô] & txtcodigo & [Ô][ô][Ô]
atualizaCampos
rs.update
end if
função atualizaCampos:
private function atualizaCampos()
rs.fields([Ô]1[Ô]) = blabla
rs.fields([Ô]2[Ô]) = blabla
end function
no botão alterar:
mode = [Ô]alterar[Ô]
[ô]habilita todas texts e etc..
no botão novo:
mode = [Ô]novo[Ô]
[ô]habilita também
no botão gravar:
if mode = [Ô]novo[Ô] then
rs.addnew
atualizaCampos
rs.update
elseif mode = [Ô]alterar[Ô] then
rs.find [Ô]cod = [ô][Ô] & txtcodigo & [Ô][ô][Ô]
atualizaCampos
rs.update
end if
função atualizaCampos:
private function atualizaCampos()
rs.fields([Ô]1[Ô]) = blabla
rs.fields([Ô]2[Ô]) = blabla
end function
porque um montão de linhas se uma unica linha a query com o update resolve.
Tópico encerrado , respostas não são mais permitidas