CADASTRO ESTRANHO

SUPERFOR 21/07/2012 21:40:48
#406413
Pessoal, estou fazendo uma improvisação tecnica para fazer uma função.

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?
MARCELO.TREZE 21/07/2012 22:10:26
#406414
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

SUPERFOR 21/07/2012 22:42:03
#406415
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
Citação:

findfirst

se eu encontrasse o registro alterava senao adicionava..

do jeito acima é um bom jeito? teria algo mais facil... ? rs
MARCELO.TREZE 22/07/2012 17:20:34
#406424
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

[ô] 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


FBGSYSTEMS 23/07/2012 00:56:25
#406429
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
KWIIBY 23/07/2012 10:51:58
#406438
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
MARCELO.TREZE 23/07/2012 11:54:48
#406444
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