ADO FIREBIRD
Quanto mais vou mexendo com ADO + Firebird mais me complico comecei a desenvolver um sistema simples de estoque, cujo encontra-se atrasado, pois to tendo serias dificuldades em trabalhar com ADO e o Banco de dados Firebird
Conexao:
Set BaseDados = New ADODB.Connection
BaseDados.CursorLocation = adUseClient
BaseDados.ConnectionString = ([Ô]DRIVER={Firebird/InterBase(r) driver};[Ô] & _
[Ô]user=SYSDBA; password=masterkey; DBNAME=[Ô] & App.Path & [Ô]\BASESAM.fdb;[Ô])
BaseDados.Open
tbServidor.CursorLocation = adUseClient
tbServidor.Open [Ô]Select * From tbServidor[Ô], BaseDados, 3, 4
1º Usando o metodo acima citado toda vez que abra um registro aparece espaços em branco e na base nao tem estes espaços.
2º Estou tentado abrir junto com o formulario os registros gravados mais da o erro Run time 3021
Conexao:
Set BaseDados = New ADODB.Connection
BaseDados.CursorLocation = adUseClient
BaseDados.ConnectionString = ([Ô]DRIVER={Firebird/InterBase(r) driver};[Ô] & _
[Ô]user=SYSDBA; password=masterkey; DBNAME=[Ô] & App.Path & [Ô]\BASESAM.fdb;[Ô])
BaseDados.Open
tbServidor.CursorLocation = adUseClient
tbServidor.Open [Ô]Select * From tbServidor[Ô], BaseDados, 3, 4
1º Usando o metodo acima citado toda vez que abra um registro aparece espaços em branco e na base nao tem estes espaços.
2º Estou tentado abrir junto com o formulario os registros gravados mais da o erro Run time 3021
Como está GRAVANDO os dados? Poste a rotina.
Outra coisa, poste a DESCRIÇÃO DO ERRO, não o NÚMERO.
Outra coisa, poste a DESCRIÇÃO DO ERRO, não o NÚMERO.
ROTINA
Sub GravarCadastro()
If txtNome.Text = Empty Then
MsgBox [Ô]Campo obrigatório vazio[Ô], vbInformation
txtNome.SetFocus
Exit Sub
End If
If txtMatricula.Text = Empty Then
MsgBox [Ô]Campo obrigatório vazio[Ô], vbInformation
txtMatricula.SetFocus
Exit Sub
End If
tbServidor!Nome = txtNome.Text
tbServidor!CPF = txtCPF.Text
tbServidor!RG = txtRG.Text
tbServidor!Matricula = txtMatricula.Text
tbServidor!Cargo = txtCargo.Text
tbServidor!Coordenadoria = txtCoordenadoria.Text
tbServidor.UpdateBatch ========================> Ja tentei tambem tbServidor.Update
cmdBotaos.Item(3).Caption = [Ô]&Fechar[Ô]
fraServidor.Enabled = False
cmdBotaos.Item(0).Enabled = True
cmdBotaos.Item(1).Enabled = False
cmdBotaos.Item(2).Enabled = False
cmdBotaos.Item(4).Enabled = False
cmdBotaos.Item(5).Enabled = True
End Sub
ROTINA
Sub AbrirCadastro()
tbServidor.MoveFirst
txtNome.Text = tbServidor!Nome
txtCPF.Text = tbServidor!CPF
txtRG.Text = tbServidor!RG
txtMatricula = tbServidor!Matricula
txtCargo.Text = tbServidor!Cargo
txtCoordenadoria.Text = tbServidor!Coordenadoria
End Sub
Segue o error
Sub GravarCadastro()
If txtNome.Text = Empty Then
MsgBox [Ô]Campo obrigatório vazio[Ô], vbInformation
txtNome.SetFocus
Exit Sub
End If
If txtMatricula.Text = Empty Then
MsgBox [Ô]Campo obrigatório vazio[Ô], vbInformation
txtMatricula.SetFocus
Exit Sub
End If
tbServidor!Nome = txtNome.Text
tbServidor!CPF = txtCPF.Text
tbServidor!RG = txtRG.Text
tbServidor!Matricula = txtMatricula.Text
tbServidor!Cargo = txtCargo.Text
tbServidor!Coordenadoria = txtCoordenadoria.Text
tbServidor.UpdateBatch ========================> Ja tentei tambem tbServidor.Update
cmdBotaos.Item(3).Caption = [Ô]&Fechar[Ô]
fraServidor.Enabled = False
cmdBotaos.Item(0).Enabled = True
cmdBotaos.Item(1).Enabled = False
cmdBotaos.Item(2).Enabled = False
cmdBotaos.Item(4).Enabled = False
cmdBotaos.Item(5).Enabled = True
End Sub
ROTINA
Sub AbrirCadastro()
tbServidor.MoveFirst
txtNome.Text = tbServidor!Nome
txtCPF.Text = tbServidor!CPF
txtRG.Text = tbServidor!RG
txtMatricula = tbServidor!Matricula
txtCargo.Text = tbServidor!Cargo
txtCoordenadoria.Text = tbServidor!Coordenadoria
End Sub
Segue o error
Para ocorrer este erro significa que você não está com o registro selecionado.
Faça o camonado por SQL:
UPDATE TABELA set CAMPO1=VALOR1,CAMPO2=VALOR2 where CAMPO_CHAVE = VALOR_CHAVE
Lembre-se que os valores caracter devem estar entre ASPAS SIMPLES e os valores DATA entre ASPAS SIMPLES e com a formatação [Ô]yyyy-mm-dd[Ô].
Faça o camonado por SQL:
UPDATE TABELA set CAMPO1=VALOR1,CAMPO2=VALOR2 where CAMPO_CHAVE = VALOR_CHAVE
Lembre-se que os valores caracter devem estar entre ASPAS SIMPLES e os valores DATA entre ASPAS SIMPLES e com a formatação [Ô]yyyy-mm-dd[Ô].
Sim a questao que usando a Rotina AbrirCadastro os dados nao estao sendo visualizados aparece a mensagem da tela em anexa.
O erro ocorre pois não há registros na TABELA.
Experimente utilizar um FRONT-END do FIREBIRD (IBExpert, IBConsole...) para visualizar se há registros.
Já tentou a dica acima para UPDATE?
Para INCLUIR...
Experimente utilizar um FRONT-END do FIREBIRD (IBExpert, IBConsole...) para visualizar se há registros.
Citação::
Para ocorrer este erro significa que você não está com o registro selecionado.
Faça o camonado por SQL:
UPDATE TABELA set CAMPO1=VALOR1,CAMPO2=VALOR2 where CAMPO_CHAVE = VALOR_CHAVE
Lembre-se que os valores caracter devem estar entre ASPAS SIMPLES e os valores DATA entre ASPAS SIMPLES e com a formatação [Ô]yyyy-mm-dd[Ô].
Já tentou a dica acima para UPDATE?
Para INCLUIR...
con.Execute [Ô]INSERT INTO tabela (campo1, campo2) VALUES ([ô]valor1[ô], [ô]valor2[ô])[Ô]
Citação:1º Usando o metodo acima citado toda vez que abra um registro aparece espaços em branco e na base nao tem estes espaços.
Se vc usar o campo como char e nao preencher todos os caracteres que vc colocou lá no limite o driver obdc preenche com espaços
use o varchar que o mesmo nao ficará com os espaços
Citação:2º Estou tentado abrir junto com o formulario os registros gravados mais da o erro Run time 3021
Esse erro posivelmente vc esta tentando carregar um registro e o recordset esta vazio
analize bem sua rotina e verifique se vc nao esta fechando o recordset ou se o registro procurado é inexistente, as vezes o registro nao retorna se vc nao aplicar o filtro correto na instrução sql
Baseado em todas as respostas dadas por você e pelos colegas, recomendo que você ABRA A TABELA quando precisar usa-la. Se a tabela está vazia (EOF=TRUE no momento em que o SELECT é executado) controle o erro e não alimente a exibição.
Ao inserir o dado, utilize o INSERT como descrito pelo TECLA pois havendo um campo NOT NULL você poderá [Ô]forçar[Ô] o valor além de GARANTIR que não está ALTERANDO um valor existente.
Ao alterar, dê preferência pelo UPDATE pois pode controlar QUAL registro será alterado (na cláusula WHERE).
Ao selecionar um registro, utilize o comando SELECT pois o resultado será filtrado na cláusula WHERE facilitando seu tratamento.
Qual é o comando que você executa para abris a tabela?
Ao inserir o dado, utilize o INSERT como descrito pelo TECLA pois havendo um campo NOT NULL você poderá [Ô]forçar[Ô] o valor além de GARANTIR que não está ALTERANDO um valor existente.
Ao alterar, dê preferência pelo UPDATE pois pode controlar QUAL registro será alterado (na cláusula WHERE).
Ao selecionar um registro, utilize o comando SELECT pois o resultado será filtrado na cláusula WHERE facilitando seu tratamento.
Qual é o comando que você executa para abris a tabela?
Tópico encerrado , respostas não são mais permitidas