VALIDACAO DATA FIREBIRD

FILMAN 27/01/2014 10:58:11
#433594
Caro OMAR2011 eu não tenho problemas em minhas aplicações com o FireBird devido o uso de parâmetros, mas obrigado por se preocupar em nos mostrar como se deve utilizar.

ADRIANOM de foto como citado em um outro tópico a utilização de parâmetros faz com que a aplicação tenha uma consistência melhor na questão de gravação no DB.

Mas realizei testes aqui e descobri o que foi o problema!

faça os testes assim

sSQL = sSQL & IIf(IsDate(txtAdmissao.Text) = False, [Ô]Null[Ô], [Ô][ô][Ô] & Format(txtAdmissao.Text, [Ô]yyyy/MM/dd[Ô]) & [Ô][ô][Ô]) & [Ô],[Ô]


a expressão NULL não pode ser passar como [ô]Null[ô] e sim somnete Null sem aspas simples

espero ter ajudado
ADRIANOM 27/01/2014 16:49:07
#433627
OMAR2011

veja o meu código, conforme seu exemplo:

  
[ô]Adicionando contato

Dim adcmdFuncionario As New ADODB.Recordset

With adcmdFuncionario

Set .ActiveConnection = CNN
.CommandType = adCmdText
.Prepared = True

.CommandText = [Ô]INSERT INTO FUNCIONARIOS (Codigo,Nome,Endereco,Numero,Bairro,Cidade,Telefone,Celular,Admissao,Demissao,Ativo,Observacao) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)[Ô]

.Parameters.Append .CreateParameter([Ô]Codigo[Ô], adVarChar, adParamInput, 10)
.Parameters.Append .CreateParameter([Ô]Nome[Ô], adVarChar, adParamInput, 500)
.Parameters.Append .CreateParameter([Ô]Endereco[Ô], adVarChar, adParamInput, 500)
.Parameters.Append .CreateParameter([Ô]Numero[Ô], adVarChar, adParamInput, 500)
.Parameters.Append .CreateParameter([Ô]Bairro[Ô], adVarChar, adParamInput, 500)
.Parameters.Append .CreateParameter([Ô]Cidade[Ô], adVarChar, adParamInput, 500)
.Parameters.Append .CreateParameter([Ô]Telefone[Ô], adVarChar, adParamInput, 100)
.Parameters.Append .CreateParameter([Ô]Celular[Ô], adVarChar, adParamInput, 100)
.Parameters.Append .CreateParameter([Ô]Admissao[Ô], adDate, adParamInput)
.Parameters.Append .CreateParameter([Ô]Demissao[Ô], adDate, adParamInput)
.Parameters.Append .CreateParameter([Ô]Ativo[Ô], adVarChar, adParamInput, 10)
.Parameters.Append .CreateParameter([Ô]Observacao[Ô], adBlob, adParamInput)

.Parameters([Ô]Codigo[Ô]) = txtCodigo.Text
.Parameters([Ô]Nome[Ô]) = txtNome.Text
.Parameters([Ô]Endereco[Ô]) = cboEndereco.Text
.Parameters([Ô]Numero[Ô]) = txtNumero.Text
.Parameters([Ô]Bairro[Ô]) = cboBairro.Text
.Parameters([Ô]Cidade[Ô]) = cboCidade.Text
.Parameters([Ô]Telefone[Ô]) = IIf(txtTel.Text = [Ô][Ô], Empty, txtTel.Text)
.Parameter([Ô]Celular[Ô]) = IIf(txtCel.Text = [Ô][Ô], Empty, txtCel.Text)
.Parameter([Ô]Admissao[Ô]) = IIf(txtAdmissao.Text = [Ô][Ô], Empty, VBA.Format(txtAdmissao.Text, [Ô]yyyy/mm/dd[Ô]))
.Parameter([Ô]Demissao[Ô]) = IIf(txtDemissao.Text = [Ô][Ô], Empty, VBA.Format(txtDemissao.Text, [Ô]yyyy/mm/dd[Ô]))
.Parameter([Ô]Ativo[Ô]) = IIf(chkFuncionario.Value = vbChecked, 1, 0)
.Parameters([Ô]Observacao[Ô]) = txtObservacao.Text

.Execute

End With

[ô]Libera o Recordset
Set adcmdFuncionario = Nothing


No .CommandType = adCmdText gera um erro, como se não houvesse referência dele no meu projeto.
Verifiquei que você utiliza o Microsoft ActiveX Data Objects 2.8 Library.... eu utilizava o 2.7, e alterei, realizando a referência da versão que veio junto ao seu projeto. Porém o .CommandType = adCmdText gera o erro.. o que pode ser???
ADRIANOM 27/01/2014 16:57:09
#433628
GRAAAAANNNNNNNNDDDDDDEEEEEEEEEE FILMAN

Deu certo...

OBRIGADO...

Pontos para você e para o OMAR2011....

Vou encerrar o tópico qndo receber retorno do OMAR2011 com a dúvida sobre o erro que aconteceu nos parâmetros e com a função de editar, também, em parâmetros... Interessei pelo danado dos parâmetros.. se você souber colabore - ainda mais...rs. - com este tópico: há muita gente com esta dúvida... e está acompanhando este tópico!

FILMAN 27/01/2014 17:01:02
#433629
Caro ADRIANOM não precisa dessa parte do código

.Parameters.Append .CreateParameter([Ô]Codigo[Ô], adVarChar, adParamInput, 10)
.Parameters.Append .CreateParameter([Ô]Nome[Ô], adVarChar, adParamInput, 500)
.Parameters.Append .CreateParameter([Ô]Endereco[Ô], adVarChar, adParamInput, 500)
.Parameters.Append .CreateParameter([Ô]Numero[Ô], adVarChar, adParamInput, 500)
.Parameters.Append .CreateParameter([Ô]Bairro[Ô], adVarChar, adParamInput, 500)
.Parameters.Append .CreateParameter([Ô]Cidade[Ô], adVarChar, adParamInput, 500)
.Parameters.Append .CreateParameter([Ô]Telefone[Ô], adVarChar, adParamInput, 100)
.Parameters.Append .CreateParameter([Ô]Celular[Ô], adVarChar, adParamInput, 100)
.Parameters.Append .CreateParameter([Ô]Admissao[Ô], adDate, adParamInput)
.Parameters.Append .CreateParameter([Ô]Demissao[Ô], adDate, adParamInput)
.Parameters.Append .CreateParameter([Ô]Ativo[Ô], adVarChar, adParamInput, 10)
.Parameters.Append .CreateParameter([Ô]Observacao[Ô], adBlob, adParamInput)



faça sem que vai dar certo os parâmetros!
OMAR2011 27/01/2014 17:17:40
#433630
[txt-color=#e80000]Dim adcmdFuncionario As New ADODB.Recordset[/txt-color], errado.

Dim adcmdFuncionario As New ADODB.Command

.[txt-color=#e80000]Parameter([Ô]Celular[Ô]) = IIf(txtCel.Text = [Ô][Ô], Empty, txtCel.Text)[/txt-color],errado

.Parameters([Ô]Celular[Ô]) = IIf(txtCel.Text = [Ô][Ô], Empty, txtCel.Text)

.Parameters([Ô]Admissao[Ô]) = IIf(txtAdmissao.Text = [Ô][Ô], Empty, VBA.Format(txtAdmissao.Text, [Ô]yyyy/mm/dd[Ô]))

.Parameters([Ô]Demissao[Ô]) = IIf(txtDemissao.Text = [Ô][Ô], Empty, VBA.Format(txtDemissao.Text, [Ô]yyyy/mm/dd[Ô]))
ADRIANOM 27/01/2014 19:45:10
#433640
FILMAN... OK... Mas não entendi então.. como ficaria?

OMAR2011... Como ficaria o comando para update?
OMAR2011 27/01/2014 20:01:29
#433641
Ai vai.
Private Sub Command5_Click()
Dim adCmdPaciente As New ADODB.Command
Dim CodCliente As Long
Dim Resp As Byte
With adCmdPaciente

Set .ActiveConnection = Db
.CommandType = adCmdText
.Prepared = True


.CommandText = [Ô]Update Cliente set Nomecli=?,Admissao=? Where IdCli=[Ô] & Text1.Text

.Parameters.Append .CreateParameter([Ô]Nomecli[Ô], adVarChar, adParamInput, 30)
.Parameters.Append .CreateParameter([Ô]Admissao[Ô], adDate, adParamInput)
.Parameters([Ô]Nomecli[Ô]) = Text2.Text
.Parameters([Ô]Admissao[Ô]) = IIf(Text4.Text = [Ô][Ô], Empty, Format(Text4.Text, [Ô]yyyy/mm/dd[Ô]))
[ô].Parameters([Ô]Admissao[Ô]) = Text4.Text

.Execute

[ô]If Err.Number <> 0 Then
[ô]MostraErro

End With

Set adCmdPaciente = Nothing
[ô]cmdNovo_Click

End Sub
FILMAN 27/01/2014 20:01:33
#433642
Ficaria basicamente assim

	Dim cCmd As New ADODB.Command

With cCmd

Set .ActiveConnection = cConn
.CommandType = adCmdText
.Prepared = True

vSQL = [Ô][Ô]

vSQL = vSQL & [Ô]INSERT INTO FUNCIONARIOS ([Ô]
vSQL = vSQL & [Ô] Codigo,[Ô]
vSQL = vSQL & [Ô] Nome,[Ô]
vSQL = vSQL & [Ô] Endereco,[Ô]
vSQL = vSQL & [Ô] Numero,[Ô]
vSQL = vSQL & [Ô] Bairro,[Ô]
vSQL = vSQL & [Ô] Cidade,[Ô]
vSQL = vSQL & [Ô] Telefone,[Ô]
vSQL = vSQL & [Ô] Celular,[Ô]
vSQL = vSQL & [Ô] Admissao,[Ô]
vSQL = vSQL & [Ô] Demissao,[Ô]
vSQL = vSQL & [Ô] Ativo,[Ô]
vSQL = vSQL & [Ô] Observacao[Ô]
vSQL = vSQL & [Ô] ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)[Ô]

.Parameters(0) = txtCodigo.Text
.Parameters(1) = txtNome.Text
.Parameters(2) = cboEndereco.Text
.Parameters(3) = txtNumero.Text
.Parameters(4) = cboBairro.Text
.Parameters(5) = cboCidade.Text
.Parameters(6) = IIf(txtTel.Text = [Ô][Ô], Empty, txtTel.Text)
.Parameter(7) = IIf(txtCel.Text = [Ô][Ô], Empty, txtCel.Text)
.Parameter(8) = IIf(IsDate(txtAdmissao.Text) = False, [Ô]Null[Ô], CDate(txtAdmissao.Text))
.Parameter(9) = IIf(IsDate(txtDemissao.Text) = False, [Ô]Null[Ô], CDate(txtDemissao.Text))
.Parameter(10) = IIf(chkFuncionario.Value = vbChecked, 1, 0)
.Parameters(11) = txtObservacao.Text

.Execute

End With

Set cCmd = Nothing
ADRIANOM 27/01/2014 20:47:57
#433644
E qual dos dois modelos me aconselham... .o antigo que o Filman conseguiu sanar o problema ou este em parâmetros?
FILMAN 27/01/2014 20:54:07
#433645
Cara eu aconselho o parâmetro, porém como o seu sistema já esta escrito muitas linhas de código daria muito trabalho para refazer, portanto não ha problema algum se você continuar da maneira com que estava fazendo!

Mas se tiver a oportunidade de mudar para parâmetros é aconselhável.

Em meu sistema utilizo parâmetros e SQL injection os dois funcionam muito bem depende de como quer prosseguir!
Página 3 de 4 [31 registro(s)]
Tópico encerrado , respostas não são mais permitidas