Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Problemas com migração de banco de dados.


K!ko

Pergunta

Ola pessoal...

seguinte... onde trabalho foi desenvolvido um sistema em delphi 5 usando paradox... eu fui encarregado de fazer a migração do paradox para o firebird...

Não fui eu que montei os layouts nem a programação... incluindo os componentes de conexão com o banco... alguns formuários funcionam e outros não... nestes q não funcionam eu suspeito estar faltando algo em relação aos componentes... tipo IBQuery, IBDataset e o Datasource...

alguém pode me ajudar??? :blush:

Agradecido desde já.

Link para o comentário
Compartilhar em outros sites

19 respostass a esta questão

Posts Recomendados

  • 0
migração do paradox para o firebird

tente usar o programa Datapump que vem com o delphi, ele serve justamente para isso

caso não funcione, entre neste endereço e procure por Full Convert Enterprise

http://3d2f.com/tags/convert/paradox/firebird/

abraço

Este Datapump serve pra que exatamente?

Link para o comentário
Compartilhar em outros sites

  • 0

Desculpa a ausencia...

então... o trabalho de migração em si já esta feito... já transferi todos os dados das tabelas do paradox para o firebird...

ou seja o banco esta pronto.... o problema é no delphi... com os componentes de conexão com o banco... eu estou usando os

componentes da aba interbase, IBQUERY, IBDATASET, etc.

já vi e revi todas as configurações... todos os componentes.... maaannss.. não encontro oque esta errado. :(

alguns form's funcionão e outros não.

tem alguma ideia do que pode ser?

Link para o comentário
Compartilhar em outros sites

  • 0
já vi e revi todas as configurações... todos os componentes.... maaannss.. não encontro o que esta errado

alguns form's funcionão e outros não.

tem alguma ideia do que pode ser?

melhor voce postar o codigo que está dando erro, fica mais facil para ajudar.

Link para o comentário
Compartilhar em outros sites

  • 0
já vi e revi todas as configurações... todos os componentes.... maaannss.. não encontro o que esta errado

alguns form's funcionão e outros não.

tem alguma ideia do que pode ser?

melhor voce postar o codigo que está dando erro, fica mais facil para ajudar.

então... aparentemene ele não está aceitando ou encontrando o select especificado no componente de conexão... mas não tenho certeza.

em alguns form's ocorre este erro:

Project Controle.exe raised exception class EIBInterbaseError with message 'Dynamic SQL Error
SQL Error code = -104
Token unknown - line 2, char 1
from'. Process stoped. Use step or Run to continue.
em outros este:
Project Controle.exe raised exception class EConvertError with message 'No argument for format '%s''
Process stoped. Use step or Run to continue.

o problema ocorre no OnCreate ou OnShow dos forms...

por isso não encontro o principio do erro, e por isso tambem, acredito q o erro ocorre devido ao componente de conexão com o banco.

Link para o comentário
Compartilhar em outros sites

  • 0
Project Controle.exe raised exception class EIBInterbaseError with message 'Dynamic SQL Error

SQL Error code = -104

Token unknown - line 2, char 1

from'. Process stoped. Use step or Run to continue.

em outros este:

Project Controle.exe raised exception class EConvertError with message 'No argument for format '%s''

Process stoped. Use step or Run to continue.

aparentemente estes erros referem-se ao comando que esta na SQL, poste o comando select que voce esta usando.

Link para o comentário
Compartilhar em outros sites

  • 0
aparentemente estes erros referem-se ao comando que esta na SQL, poste o comando select que voce esta usando.

um simples "SELECT * FROM GR"

GR = Nome da tabela...

Link para o comentário
Compartilhar em outros sites

  • 0
um simples "SELECT * FROM GR"

GR = Nome da tabela...

se este comando estiver dentro da propriedade SQL da query e GR não é o nome da tabela, está errado

se estiver passando o nome da tabela como paramentro, o comando select tem que ser construido via codigo

alem de que esta mensagem ( 'No argument for format '%s'' tradução -> Nenhum argumento para o formato %s )indica que há mais instruções no comando

melhor voce postar o codigo, para ficar mais facil responder.

Link para o comentário
Compartilhar em outros sites

  • 0

se este comando estiver dentro da propriedade SQL da query e GR não é o nome da tabela, está errado

O Select esta na propriedade SQL do componente... o nome da tabela esta certo, é GR mesmo

se estiver passando o nome da tabela como paramentro, o comando select tem que ser construido via codigo

O Select não é passado por parametro...

alem de que esta mensagem ( 'No argument for format '%s'' tradução -> Nenhum argumento para o formato %s )indica que há mais instruções no comando

melhor voce postar o codigo, para ficar mais facil responder.

o local exato onde o erro ocorre é o seguinte:

procedure TFrmcdgr.FormShow(Sender: TObject);
begin
     dm.Qrgr.Open;
end;

o erro acorre assim que eu chamo o form pelo menu...

alguma sugestão?

Link para o comentário
Compartilhar em outros sites

  • 0

o erro acorre assim que eu chamo o form pelo menu...

Vamos ver se entendi... quando voce chama o form o evento FormShow voce executa o comando para abrir a query

' dm.Qrgr.Open; ' ai acontece este erro

Project Controle.exe raised exception class EIBInterbaseError with message 'Dynamic SQL Error

SQL Error code = -104

Token unknown - line 2, char 1

from'. Process stoped. Use step or Run to continue.

este erro indica que existe um simbolo desconhecido na line 2, char 1, e voce disse que a sua select esta assim

'Select * from GR' então não dá pra enteder ... verifique novamente as suas querys, porque se nesta query existe apenas uma linha ele não poderia dar erro na linha 2 que não existe.

Link para o comentário
Compartilhar em outros sites

  • 0
Vamos ver se entendi... quando voce chama o form o evento FormShow voce executa o comando para abrir a query

' dm.Qrgr.Open; ' ai acontece este erro

é exatamente isto...

este erro indica que existe um simbolo desconhecido na line 2, char 1, e voce disse que a sua select esta assim

'Select * from GR' então não dá pra enteder ... verifique novamente as suas querys, porque se nesta query existe apenas uma linha ele não poderia dar erro na linha 2 que não existe.

A gente ta na mesma situação...

O select só é passado no SQL da query... e não existe nenhuma outra linha além desta 'Select * from GR'

eu já removi e recriei o componente... já revi as conexões... msmo assim não funfo... não consigo enternder o por que deste erro

to pra fica loko :wacko:

Link para o comentário
Compartilhar em outros sites

  • 0

outro questionamento sobre os componentes:

voce esta usando o IBQuery1, DataSetProvider1, ClientDataSet1 e o DataSource1 ?

e no ClientDataSet1 na propriedade ProviderName esta o DataSetProvider1 ?

e esta fazendo as ligações entre os componentes corretamente ?

no componente IBQuery1, quando voce clica na propriedade active deixando em true, acontece algum erro ?

no componente ClientDataSet1, quando voce clica na propriedade active deixando em true, acontece algum erro ?

Link para o comentário
Compartilhar em outros sites

  • 0
outro questionamento sobre os componentes:

voce esta usando o IBQuery1, DataSetProvider1, ClientDataSet1 e o DataSource1 ?
estou usando os seguintes componentes:

No Datamodule: 1 IBDataSet (nome = qrgr), 1 Datasource (nome = dsgr), 1 IBDataBase (nome = DB) e um IBTransaction (nome = Transaction)

nos quais o datasource esta ligado no qrgr; o qrgr esta ligado no db; e o transaction esta ligado no db tambem.

os campos do form estão lidados no datasource.

o db esta fazendo a conexão com o banco... juntamente com o transaction, para poder gravar, excluir, alterar, etc.

e no ClientDataSet1 na propriedade ProviderName esta o DataSetProvider1 ?

e esta fazendo as ligações entre os componentes corretamente ?
comparado as dos outros sistemas que fiz sim, o modo de conexão é semelhante.

no componente IBQuery1, quando voce clica na propriedade active deixando em true, acontece algum erro ?

quando deixo a propriedade active do qrgr em 'true' acontece aquele erro misterioso... o msmo ocorre quando tento adicionar algum campo no mesmo.

basicamente é isso.

essas informções ajudão?

Link para o comentário
Compartilhar em outros sites

  • 0
estou usando os seguintes componentes:

No Datamodule: 1 IBDataSet (nome = qrgr), 1 Datasource (nome = dsgr), 1 IBDataBase (nome = DB) e um IBTransaction (nome = Transaction)

Ajudou muito voce informar quais os componentes que esta usando; veja bem... ao usar um IBDataSet voce não tem a necessidade de usar um IBQuery1, por que no IBDataSet voce tem uma propriedade chamada SelectSQL onde voce digita a select que voce vai usar EX: Select * from GR

o Datasource vai então ligado ao IBDataSet que por sua vez esta ligado ao IBDataBase onde por sua vez contem o caminho para o seu banco de dados na propriedade DatabaseName, e este esta ligado ao IBTransaction pela propriedade DefaltTransaction

então neste caso o IBQuery1 esta sobrando

usando os mesmos componentes e fazendo o select da tabela no IBDataSet , aqui esta funcionando certo

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
então neste caso o IBQuery1 esta sobrando
eu não estou usando IBQuery.

No Datamodule: 1 IBDataSet (nome = qrgr), 1 Datasource (nome = dsgr), 1 IBDataBase (nome = DB) e um IBTransaction (nome = Transaction)

Ajudou muito voce informar quais os componentes que esta usando; veja bem... ao usar um IBDataSet voce não tem a necessidade de usar um IBQuery1, por que no IBDataSet voce tem uma propriedade chamada SelectSQL onde voce digita a select que voce vai usar EX: Select * from GR

o Datasource vai então ligado ao IBDataSet que por sua vez esta ligado ao IBDataBase onde por sua vez contem o caminho para o seu banco de dados na propriedade DatabaseName, e este esta ligado ao IBTransaction pela propriedade DefaltTransaction

por incrivel que pareça é exatamente o que estou fazendo, e pelo que você me disse as configurações feitas estão corretas pois estão iguais as que você mensionou acima... no entanto o erro persiste.

eu as fiz comparando-as com as de outro sistema, cujo as configurações desses componentes são identicas e tem a mesma finalidade.

agora eu fiquei um pouco mais confuso... pois se as configurações estão corretas por que ocorre o erro???

pelamor se você consegui pensa em alguma coisa me fala.

Editado por K!ko
Link para o comentário
Compartilhar em outros sites

  • 0

Uffa!!!

Encontrei o problema...

tipo, na verdade esse sistema passou por duas migrações de banco de dados:

1º de Paradox para Interbase.

2º de Interbase para Firebird.

A pessoa que me deu a tarefa de concertar os erros existentes me disse que havia sido feita a migração de Paradox para Firebird, e essa mesma pessoa disse que o Datamodule e o banco de dados já estavam prontos e funcionando. No entanto, eu não reparei que os selects usados estavão feitos com letras em minusculo sendo que o nome das tabelas são em maiusculo. Pro firebird isso faz diferença!

então comecei analizar o erro...

Project Controle.exe raised exception class EIBInterbaseError with message 'Dynamic SQL Error

SQL Error code = -104

Token unknown - line 2, char 1

from'. Process stoped. Use step or Run to continue.

ele parava no "from" e a linha 2 existe de fato... não exatamente no select usado na propriedade selecSQL do IBDataSet mas em outro lugar:

clicando com o botão direito do mouse sobre o componente> depois em database editor...> existe uma aba sql onde lhe permite pré-editar os selects usados para modificar, deletar, inserir e atualizar... o erro ocorria no select usado para atualizar, que estava assim:

Select *
from gr 
where
  GRCODI = :GRCODI

por isso o erro ocorria na 2ª linha... ele não encontrava a tabela, pois ela se chama "GR" e não "gr".

Enfim o problema está resolvido... na verdade foi por falta de informações passadas a mim que ele se agravou

obrigado pela atenção Jhonas! :)

e desculpa o encomodo.

Editado por K!ko
Link para o comentário
Compartilhar em outros sites

  • 0
Select *
from gr 
where
  GRCODI = :GRCODI

por isso o erro ocorria na 2ª linha... ele não encontrava a tabela, pois ela se chama "GR" e não "gr".

K!ko, bom que resolveu o problema. Mas, acho estranho este tipo de erro, porque não existe esta diferenciação entre maiúsculas e minúsculas para qualquer comando ou nome de campo que você coloque na instrução SQL. (pelo menos da versão >1.5)

Penso que pudesse ser apenas alguma "sugeirinha" perdida, que foi elimina quando você editou a consulta. Já tentou colocar o nome da tabela em maiúscula de novo?

Quando você migrou do Interbase para o Firebird, a DLL client (GDS32.DLL) foi substituída pela do Firebird?

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Olá Micheus!

K!ko, bom que resolveu o problema. Mas, acho estranho este tipo de erro, porque não existe esta diferenciação entre maiúsculas e minúsculas para qualquer comando ou nome de campo que você coloque na instrução SQL. (pelo menos da versão >1.5)

Penso que pudesse ser apenas alguma "sugeirinha" perdida, que foi elimina quando você editou a consulta. Já tentou colocar o nome da tabela em maiúscula de novo?
Sim verifiquei isto... retornei o Select antigo e o erro se repetiu... mas o erro não envolvia apenas a propriedade SelectSQL do IBDataset, mas sim os Selects pré-editados pelo componente, disponivel ao clicar com o botão direito do mouse sobre ele e ir em "Database Editor", Lá ele pré-edita os Selects usados para Modificar, Inserir, Deletar e Atualizar, baste selecionar a tabela, os campos pertencentes a ela, e a(s) chave primaria(s) que ele gera os selects; era justamente neste ultimo (o de atualizar) que o erro ocorria;

Quando você migrou do Interbase para o Firebird, a DLL client (GDS32.DLL) foi substituída pela do Firebird?

Não fui eu quem fez as migrações... apenas me encarregarão de consertar os erros existentes, sem ao menos me dizer o que havia sido feito nele.

Obrigado pela atenção! :D

abraço

Editado por Micheus
Transportado conteúdo do post sem login.
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...