ONDE ESTOU ERRANDO: PARAMETROS FIREBIRD VB6
Estou tentando salvar utilizando parâmetros... (conforme, depois de muito quebrar a cabeça, vocês me ensinaram). Gostaria de saber onde está o erro... ele me acusa erro no [Ô].Execute[Ô]!
Segue o código:
Leva-se em consideração que os campos txtServiço e txtObservação são Blob Text de 2000 caracteres pelo fato de serem passÃveis de grandes entradas de dados.
Outra coisa: A partir daqui gostaria que analisassem a forma que uso para salvar a edição, está correto?
Segue:
Segue o código:
[ô]Salva os dados
Dim cCmd As New ADODB.Command
If txtServico.Text = Empty Then
MsgBox [Ô]Favor registrar o tipo de serviço que será realizado.[Ô], vbInformation, [Ô]GWorks Softs[Ô]
Exit Sub
Else
If Func_Add = True Then
sSQL = [Ô][Ô]
sSQL = sSQL & [Ô]INSERT INTO OS ([Ô]
sSQL = sSQL & [Ô] PFIS,[Ô]
sSQL = sSQL & [Ô] PJUR,[Ô]
sSQL = sSQL & [Ô] CODIGO,[Ô]
sSQL = sSQL & [Ô] CLIENTE,[Ô]
sSQL = sSQL & [Ô] ENDERECO,[Ô]
sSQL = sSQL & [Ô] STATUS,[Ô]
sSQL = sSQL & [Ô] RESPONSAVEL,[Ô]
sSQL = sSQL & [Ô] SERVICO,[Ô]
sSQL = sSQL & [Ô] OBSERVACAO,[Ô]
sSQL = sSQL & [Ô] DTCADASTRO,[Ô]
sSQL = sSQL & [Ô] DTAGENDAMENTO,[Ô]
sSQL = sSQL & [Ô] DTENCERRAMENTO)[Ô]
sSQL = sSQL & [Ô] VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)[Ô]
With cCmd
Set .ActiveConnection = CNN
.CommandType = adCmdText
.CommandText = sSQL
.Prepared = True
.Parameters(0) = IIf(optFisica.Value = True, 1, 0)
.Parameters(1) = IIf(optJuridica.Value = True, 1, 0)
.Parameters(2) = txtCodigo.Text
.Parameters(3) = IIf(cboNome.Text = [Ô][Ô], Null, cboNome.Text)
.Parameters(4) = IIf(txtEndereco.Text = [Ô][Ô], Null, txtEndereco.Text)
.Parameters(5) = IIf(cboStatus.Text = [Ô][Ô], Null, cboStatus.Text)
.Parameters(6) = IIf(cboResponsavel.Text = [Ô][Ô], Null, cboResponsavel.Text)
.Parameters(7) = IIf(txtServico.Text = [Ô][Ô], Null, txtServico.Text)
.Parameters(8) = IIf(txtObservacao.Text = [Ô][Ô], Null, txtObservacao.Text)
.Parameters(9) = IIf(txtAbertura.Text = [Ô][Ô], Null, VBA.Format(txtAbertura.Text, [Ô]yyyy/MM/dd[Ô]))
.Parameters(10) = IIf(txtAgendamento.Text = [Ô][Ô], Null, VBA.Format(txtAgendamento.Text, [Ô]yyyy/MM/dd[Ô]))
.Parameters(11) = IIf(txtConclusao.Text = [Ô][Ô], Null, VBA.Format(txtConclusao.Text, [Ô]yyyy/MM/dd[Ô]))
.Execute
End With
Set cCmd = Nothing
Leva-se em consideração que os campos txtServiço e txtObservação são Blob Text de 2000 caracteres pelo fato de serem passÃveis de grandes entradas de dados.
Outra coisa: A partir daqui gostaria que analisassem a forma que uso para salvar a edição, está correto?
Segue:
If Func_Edit = True Then
[ô]Salva Edição
sSQL = [Ô][Ô]
sSQL = sSQL & [Ô]UPDATE OS SET PFIS = ?[Ô]
sSQL = sSQL & [Ô] PJUR = ?[Ô]
sSQL = sSQL & [Ô] CLIENTE = ?,[Ô]
sSQL = sSQL & [Ô] ENDERECO = ?,[Ô]
sSQL = sSQL & [Ô] STATUS = ?,[Ô]
sSQL = sSQL & [Ô] RESPONSAVEL = ?,[Ô]
sSQL = sSQL & [Ô] SERVICO = ?,[Ô]
sSQL = sSQL & [Ô] OBSERVACAO = ?,[Ô]
sSQL = sSQL & [Ô] DTCADASTRO = ?,[Ô]
sSQL = sSQL & [Ô] DTAGENDAMENTO = ?,[Ô]
sSQL = sSQL & [Ô] DTENCERRAMENTO = ?)[Ô]
sSQL = sSQL & [Ô] WHERE CODIGO = [Ô] & txtCodigo.Text
With cCmd
Set .ActiveConnection = CNN
.CommandType = adCmdText
.CommandText = sSQL
.Prepared = True
.Parameters.Append .CreateParameter([Ô]PFIS[Ô], adVarChar, adParamInput, 1)
.Parameters.Append .CreateParameter([Ô]PJUR[Ô], adVarChar, adParamInput, 1)
.Parameters.Append .CreateParameter([Ô]CLIENTE[Ô], adVarChar, adParamInput, 500)
.Parameters.Append .CreateParameter([Ô]ENDERECO[Ô], adVarChar, adParamInput, 500)
.Parameters.Append .CreateParameter([Ô]STATUS[Ô], adVarChar, adParamInput, 200)
.Parameters.Append .CreateParameter([Ô]RESPONSAVEL[Ô], adVarChar, adParamInput, 500)
.Parameters.Append .CreateParameter([Ô]SERVICO[Ô], adTypeText, adParamInput, 2000)
.Parameters.Append .CreateParameter([Ô]OBSERVACAO[Ô], adTypeText, adParamInput, 2000)
.Parameters.Append .CreateParameter([Ô]DTCADASTRO[Ô], adDate, adParamInput)
.Parameters.Append .CreateParameter([Ô]DTAGENDAMENTO[Ô], adDate, adParamInput)
.Parameters.Append .CreateParameter([Ô]DTENCERRAMENTO[Ô], adDate, adParamInput)
.Parameters([Ô]PFIS[Ô]) = IIf(optFisica.Value = True, 1, 0)
.Parameters([Ô]PJUR[Ô]) = IIf(optJuridica.Value = True, 1, 0)
.Parameters([Ô]CLIENTE[Ô]) = IIf(cboNome.Text = [Ô][Ô], Null, cboNome.Text)
.Parameters([Ô]ENDERECO[Ô]) = IIf(txtEndereco.Text = [Ô][Ô], Null, txtEndereco.Text)
.Parameters([Ô]STATUS[Ô]) = IIf(cboStatus.Text = [Ô][Ô], Null, cboStatus.Text)
.Parameters([Ô]RESPONSAVEL[Ô]) = IIf(cboResponsavel.Text = [Ô][Ô], Null, cboResponsavel.Text)
.Parameters([Ô]SERVICO[Ô]) = IIf(txtServico.Text = [Ô][Ô], Null, txtServico.Text)
.Parameters([Ô]OBSERVACAO[Ô]) = IIf(txtObservacao.Text = [Ô][Ô], Null, txtObservacao.Text)
.Parameters([Ô]DTCADASTRO[Ô]) = IIf(txtAbertura.Text = [Ô][Ô], Null, VBA.Format(txtAbertura.Text, [Ô]yyyy/MM/dd[Ô]))
.Parameters([Ô]DTAGENDAMENTO[Ô]) = IIf(txtAgendamento.Text = [Ô][Ô], Null, VBA.Format(txtAgendamento.Text, [Ô]yyyy/MM/dd[Ô]))
.Parameters([Ô]DTENCERRAMENTO[Ô]) = IIf(txtConclusao.Text = [Ô][Ô], Null, VBA.Format(txtConclusao.Text, [Ô]yyyy/MM/dd[Ô]))
.Execute
End With
Set cCmd = Nothing
End If
ADRIANOM, qual o erro que esta aparecendo?
FILMAN
Juro por tudo que é mais sagrado que estava dando erro..
estou usando o vmware para virtualizar xp com vb6...
foi só desligar e reiniciar, sem qlqr tipo de alteração no código e o negócio funcionou lisinho.. o que poderia ser???
Juro por tudo que é mais sagrado que estava dando erro..
estou usando o vmware para virtualizar xp com vb6...
foi só desligar e reiniciar, sem qlqr tipo de alteração no código e o negócio funcionou lisinho.. o que poderia ser???
você pode ter realizado alguma alteração no SGDB do firebird ou desinstalou o ODBC e instalou novamente sem reiniciar o S.O.
Ou realizou testes de instalações que corromperam alguns arquivos e ficaram reso em memória causando o erro e a reinicialização fez com que restabelecesse os arquivos de configuração do serviço.
é difÃcil dizer ao certo!
Ou realizou testes de instalações que corromperam alguns arquivos e ficaram reso em memória causando o erro e a reinicialização fez com que restabelecesse os arquivos de configuração do serviço.
é difÃcil dizer ao certo!
minto.... erro voltou.... segue imagem com descrição....
certo de fato é o campo BLOB você a subType como Text?
Eu particularmente não gosto do BLOB fica mais lento
Eu particularmente não gosto do BLOB fica mais lento
Exatamente...uso..
Agora, o que você me sugeriria?
Agora, o que você me sugeriria?
Sugiro que mude o campo para VARCHAR(4000)
ALTER TABLE OS ALTER COLUMN SERVICO TYPE VARCHAR(4000) CHARACTER SET WIN1252;
ALTER TABLE OS ALTER COLUMN OBSERVACAO TYPE VARCHAR(4000) CHARACTER SET WIN1252;
espero ter ajudado
ALTER TABLE OS ALTER COLUMN SERVICO TYPE VARCHAR(4000) CHARACTER SET WIN1252;
ALTER TABLE OS ALTER COLUMN OBSERVACAO TYPE VARCHAR(4000) CHARACTER SET WIN1252;
espero ter ajudado
como assim.. queria usar um textbox multline... mas varchar(4000) captaria?
Ainda sem resposta...
sim você pode usar o MultiLine normalmente e ao gravar você conseguirá retornar os valores, e você pode também delimitar o tamanho colocando o maxlength = 4000
Tópico encerrado , respostas não são mais permitidas