Tipos de Campo e Base de Dados Diferentes - LOCATE -

Delphi

28/02/2005

Vou tentar explicar calmamente a minha questão.

Tenho um sistema que trabalha com 3 base de dados, sendo uma delas, a principal, firebird, e as outras duas sendo ACCESS.

tenho neste mesmo sistema, um form onde tenho os seguintes campos:

firebird:

codservico integer
codcliente integer
etc...

até aqui tudo bem, mas nessa janela, tem um Rxdblookup que me exibe o nome dos clientes, de uma das minhas tabelas Access, como já devem ter presumido, uso o valor do meu IB_editcodcliente como parametro pra um LOCATE na tabela Access, pra que o usuário se sinta acomodado em ter as opções de escolher o Nome do cliente ou o código do mesmo.

Sacaram a questão ? Mas a bronca ainda nao é essa, vo mostrar agora
:shock:

O pepino é o seguinte:

O campo Codcliente, da minha tabela firebird, é to tipo integer, e o campo Codigo da minha tabela Cliente (Base Access) é do tipo Texto de 14 dígitos (Já vi a tabela e os campos não passam de 8, mas nao importa por que isso é variável)

Como resolver isso ?

Tenho uma rotina que preenche com zeros um edit por exemplo, que está funcionando, mas, se por ventura no outro sistema que tenho, o usuário cadastrar um cliente com o código 99, o Locate nao pega.

Sacaram a questão ?
:roll:

Não gostaria de ter que converter o meu campo pra varchar(14), pois o sistema tá 99¬ funcional, se eu fizesse isso iria detonar uma porrada de rotina especificas pra inteiros que uso no meu sistema.

Se alguem puder....

HELP MEEEEE....

:shock:


Technos

Technos

Curtidas 0

Respostas

Koplin

Koplin

28/02/2005

Uma gambiarrinha q fiz numa situação parecida:
cria um campo na sua tabela acces do tipo integer e poe nela o valor convertido de string para integer. Faz o locate por este campo.
Tipo:

campo original campo gambiarra
00000000000099 <--> 99
00000000000547 <--> 547
se o campo texto so recebe caracteres numericos resolve sem mexer em nada no sistema a exceção do locate que vai buscar por este campo novo.


GOSTEI 0
Aroldo Zanela

Aroldo Zanela

28/02/2005

Colega,

Creio não ter entendido, pois com simples CAST poderia resolver o problema.


GOSTEI 0
Technos

Technos

28/02/2005

Quanto a primeira resposta do Koplin, pode até dar certo essa sua opnião, mas a base de dados Access é a base principal de outro sistema, totalmente funcional, seria um enorme risco, sem contar com a perda de tempo, pra preencher todos os registros que já existem (o bando tá com 200 mb), com um novo campo, e aindatem que registrar valores nele.

A segunda respota do nosso amigo Aroldo, nao entendi esse CAST que vc falou, poderia me dar um exemplo ?

Technos


GOSTEI 0
Technos

Technos

28/02/2005

Amigos, fiz o óbvio.

Converti meu minha base de dados pra o mesmo tipo do campo da base de dados access, ou seja, pra varchar(14), o sistema tá funfando numa boa.

Só que tive que alterar um bocado de rotina pra o novo tipo, mas o resultado valeu a pena...

Mais um sistema rodando nas ruas...

Valeus

Technos


GOSTEI 0
POSTAR