Tipos de Campo e Base de Dados Diferentes - LOCATE -
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:
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
Curtidas 0
Respostas
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.
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
28/02/2005
Colega,
Creio não ter entendido, pois com simples CAST poderia resolver o problema.
Creio não ter entendido, pois com simples CAST poderia resolver o problema.
GOSTEI 0
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
A segunda respota do nosso amigo Aroldo, nao entendi esse CAST que vc falou, poderia me dar um exemplo ?
Technos
GOSTEI 0
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
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