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

Problema


Guest - ANA -

Pergunta

Galera é o seguinte,

to importando um arquivo atraves do delphi (criei uma janelinha para importar), levando para o oracle (pl/sql).

mas o problema é: eu importo uma vez..blza...

dai na segunda vez se eu importar o mesmo arquivo os dados ficam duplicados...

como posso fazer com ele de apenas um atualizar na tabela?

to no ar direto ate as 18h.

se puderem me ajudar..

valeu

abraço

Link para o comentário
Compartilhar em outros sites

13 respostass a esta questão

Posts Recomendados

  • 0

tenta assim:

cria uma função que vai ler linha por linha o arquivo e vai buscar no banco pra ver se já existe.... se existir, passa pra outra linha e não grava, se não existir, grava e depois passa pra outra linha.

você não falou,mas esse arquivo que você ta lendo, é de que tipo (txt, excel,...)?

tenta essa ai, se não der posta de novo...

PS: ele ta gravando os dados duplicados não o codigo ne?

tipo:

codigo - nome

1 - bastard

2 - bastard

isso né? ou??

codigo - nome

1 - bastard

1 - bastard

Ate!

Link para o comentário
Compartilhar em outros sites

  • 0

SERIA MAIS OU MENOS ISSO..

nome é a variavel que recebe o valor do txt

if nome = DMDados.QueryDoadorNOME_DOADOR.Value then

begin

DMDados.QueryAlteraDados.Close;

DMDados.QueryAlteraDados.ParamByName('TEL_DOADOR').asstring := tel;

DMDados.QueryAlteraDados.ParamByName('NOME_DOADOR').asstring := nome;

DMDados.QueryAlteraDados.ParamByName('RUA_DOADOR').asstring := rua;

DMDados.QueryAlteraDados.ParamByName('BAIRRO_DOADOR').asstring := bairro;

DMDados.QueryAlteraDados.ParamByName('CIDADE_DOADOR').asstring := cidade;

DMDados.QueryAlteraDados.ParamByName('UF_DOADOR').asstring := uf;

DMDados.QueryAlteraDados.ParamByName('CEP_DOADOR').asstring := cep;

DMDados.QueryAlteraDados.ParamByName('VLR_DOADOR').asstring := valor;

DMDados.QueryAlteraDados.ExecSQL;

DMDados.QueryAlteraDados.Close;

end

else

begin

DMDados.QueryGravDoador.Close;

DMDados.QueryGravDoador.ParamByName('TEL_DOADOR').asstring := tel;

DMDados.QueryGravDoador.ParamByName('NOME_DOADOR').asstring := nome;

DMDados.QueryGravDoador.ParamByName('RUA_DOADOR').asstring := rua;

DMDados.QueryGravDoador.ParamByName('BAIRRO_DOADOR').asstring := bairro;

DMDados.QueryGravDoador.ParamByName('CIDADE_DOADOR').asstring := cidade;

DMDados.QueryGravDoador.ParamByName('UF_DOADOR').asstring := uf;

DMDados.QueryGravDoador.ParamByName('CEP_DOADOR').asstring := cep;

DMDados.QueryGravDoador.ParamByName('VLR_DOADOR').asstring := valor;

DMDados.QueryGravDoador.ExecSQL;

DMDados.QueryGravDoador.Close;

end;

Link para o comentário
Compartilhar em outros sites

  • 0

ESSE FORUM É UMA MERDA........

ARRUMEM MODERADORES QUE SAIBAM FAZER A COISA....

FICA ESSA ZONA......

UJMA PORCARIA...

Não seja radical! Ninguém sabe td! O Fórum é uma comunidade onde todos aprendem, inclusive os moderadores!

Nunca menospreze os outros, afinal se você é tão boa assim quanto as suas palavras, você certamente não precisa de Fóruns!

wink.gif

Abs.

Kiko

Link para o comentário
Compartilhar em outros sites

  • 0

não TO FALANDO PELAS RESPOSTA...

REALMENTE TEM ME AJUDADO MUITO...

MAS POR OUTRAS COISAS QUE não VEM AO CASO....não são PARA VC......

O RECADO DEIXADO ANTERIORMENTE TEM DESTINATARIO E A PESSOA SABE QUEM É...A CARAPUÇA VAI SERVIR DIREITINHO....

MESMO ASSIM, não RETIRO O QUE EU DISSE....

cool.gif

Link para o comentário
Compartilhar em outros sites

  • 0

faz assim:

cria uma função que retorna um Boolean tipo:

function TemNaBase(nome: String):Boolean;
nela tu faz o select passando o nome que vem do txt inicia em em false e so passa true se a tua query no final for IsEmpty é no caso ela não axou nada... ai antes de tu inseir os dados tu coloca:
if TemNaBase(nome) then

ai o codigo pra inserir... se o resultado for false (o recordCount da qry foi > 1 ele não vai inserir).

isso deve resolver teu problema!

Agora comentando um poco... os comentarios que você deixou aqui... sinceramente... não eram necessarios... p****... se vem pedir ajuda no forum, não é se demora um poco pra responder q você pode se axar no direito de sair xingando todo mundo! foram apenas 3 pessoas ativas nesse post aqui... eu o kiko e Adriano... nossos comentarios... foram pra ajudar e não pra avacalhar com vc... se estamos no forum... estamos pra APRENDER... pois ninguém sabe tudo! não é so porque o cara é op que ele tem o dever de resolver todos os topicos... na minha opnião esse é um dos melhores (se não o melhor) forum de programação so país....

fica minha critica aqui...

Abraços!

bastard2003!

Link para o comentário
Compartilhar em outros sites

  • 0

Tambem não entendi qual foi a bronca, mais ta ai fazer o que!

Tambem não tinha visto que você queria pasar arquivo TXT para DB, então por isso respondi errado solicitando chave primaria para não ter como duplicar codigos, achando de DB para DB.

Mais tai seu protesto enfim acho que devemos é nos unir para quaisquer questao ou duvida aqui no Forum.

Tambem me registrei nesse forum por acha-lo muito bom.

falou

T+

Link para o comentário
Compartilhar em outros sites

  • 0

Acho q a melhor forma de fazer isso é através de uma procedure no banco de dados... você passa os valores por parâmetro para essa procedure e dentro dela você testa se já existe o registro, caso exista você faz um update na tabela... caso não exista você faz um insert...

Caso você não saiba fazer essa procedure eu posso t ajudar... MSN: ri_ismiti@hotmail.com

Vlw.

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,5k
×
×
  • Criar Novo...