Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
jefmachia Novato
![Novato Novato](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/star1.gif)
Registrado: Quinta-Feira, 24 de Outubro de 2013 Mensagens: 93
|
Enviada: Seg Dez 29, 2014 3:18 pm Assunto: Gravar Varias linhas de uam vez Resolvido |
|
|
Pessoal estou em um dilema aqui já tem alguns dias e vim recorrer a vocês, pois não estou encontrando a solução. Seguinte tenho uma lista que vai vir em um .TXT nela constam vários códigos do tipo 000-14585-12542-0005 isso vai vir linha a linha, então preciso copiar isso de um arquivo .txt e colar no delphi onde venha linha a linha da mesma forma que copiei do .txt após estarem todos um abaixo do outro no delphi eu vou pedir para ele gravar de uma só vez no banco de dados e caso já exista o código gravado preciso que o sistema não grave pule esse código ou mesmo delete ele depois de terminar o loop de gravação. Algo assim. Está complicado para fazer ele entender de gravar linha a linha, tipo para eu colar e já ficar um abaixo do outro. Fico no aguardo de alguma solução. Obrigado pessoal.
Editado pela última vez por jefmachia em Ter Set 29, 2015 7:42 pm, num total de 1 vez |
|
Voltar ao Topo |
|
![](templates/subSilver/images/spacer.gif) |
Ghost_Rider Colaborador
![Colaborador Colaborador](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/colaborador.gif)
Registrado: Segunda-Feira, 6 de Outubro de 2003 Mensagens: 4437
|
Enviada: Seg Dez 29, 2014 5:12 pm Assunto: |
|
|
Bom, primeiro, se cada linha é um registo, e vc precisa verificar se o registro existe, não tem como fazer tudo de uma vez.
Para "colar" no delphi, teria que jogar as linhas num memo, uma abaixo da outra, o que é simples, mas se você precisar verificar se os códigos existem, não é exatamente isso que você esta desejando no seu topico...explica melhor sua necessidade... |
|
Voltar ao Topo |
|
![](templates/subSilver/images/spacer.gif) |
jefmachia Novato
![Novato Novato](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/star1.gif)
Registrado: Quinta-Feira, 24 de Outubro de 2013 Mensagens: 93
|
Enviada: Seg Dez 29, 2014 7:37 pm Assunto: |
|
|
Ghost_Rider estou aqui quebrando a cuca ainda, na realidade consegui fazer um loop usando o MEMO até ai blz, agora estou precisando fazer ele gravar uma a um - Mas para explicar um pouco melhor, um amigo cadastra códigos de usuário então esses codigos não podem ser repetidos, poderia ser pelo memo não tem problema, ele so vai precisar checar se existe ou não antes de gravar que penso eu que isso seja meio simples, vou pedir para ele consultar e se retornar igual a zero ele grava até ai tranquilo, agora minha briga está para fazer um loop na hora de gravar para que ele vai gravando uma a uma. Estou quase chegando lá, se puder me ajudar no loop para gravar, vai ajudar bastante. Vou passar a forma em que estou gravando.
MyQuery1.FieldByName('nome').AsString := Memo1.Lines.Strings[i];
MyQuery1.Post;
Eu preciso fazer ele postar mais que uma vez, assim ele está gravando somente uma linha e não todas.
para ficar claro o uso disso para ele. Ele trabalha com umas vendas online para jogos virtuais e ele tem um sisteminha online mesmo que já gera pra ele os codigos de todos que compraram lá, então ele quer pegar os codigos dessa lista e jogar em outro sistema, para que daqui amanhã quando ele tem coisas novas ele não mande MI mais que uma vez para o cliente dele. Então por esse motivo preciso que não exista código repetido.... |
|
Voltar ao Topo |
|
![](templates/subSilver/images/spacer.gif) |
jefmachia Novato
![Novato Novato](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/star1.gif)
Registrado: Quinta-Feira, 24 de Outubro de 2013 Mensagens: 93
|
Enviada: Seg Dez 29, 2014 8:09 pm Assunto: |
|
|
Amigos já quase resolvi todo o problema, so preciso de mais um empurrão aqui. Seguinte vou postar o código, ele já está gravando no banco de dados, agora preciso que ele veja se já existe e não grave se existir. A consulta é até meio simples a minha dúvida é a seguinte, como fazer ele não copiar esse registro para o banco caso o mesmo exista e continuar gravando o restante da lista.
procedure TForm1.BitBtn1Click(Sender: TObject);
var
i : Integer;
begin
MyQuery1.Insert;
for i := 0 to Memo1.Lines.Count - 1 do
if Memo1.Lines.Strings[i] = '' then
begin
abort;
end
else begin
MyQuery1.Insert;
MyQuery1.FieldByName('nome').AsString := Memo1.Lines.Strings[i];
MyQuery1.Post;
end;
MessageDlg('Arquivos Geavados Com Sucesso', mtWarning, [mbOK], 0);
end;
end. |
|
Voltar ao Topo |
|
![](templates/subSilver/images/spacer.gif) |
jefmachia Novato
![Novato Novato](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/star1.gif)
Registrado: Quinta-Feira, 24 de Outubro de 2013 Mensagens: 93
|
Enviada: Seg Dez 29, 2014 10:47 pm Assunto: |
|
|
Amigos é o seguinte, dai mesmo consegui fazer o que eu precisava. Bom agora vem o dilema número dois, vamos ver se conseguem me ajudar.
Preciso que o procedimento seja o inverso desse, ou seja, a pessoa vai colar os códigos em um MEMO e depois preciso apertar que que exclua esse dados, tentei mudando a linha do POST para DELETE mas não funcionou. Tem alguma idéia e sabe me falar se da pra fazer isso? Obrigado. |
|
Voltar ao Topo |
|
![](templates/subSilver/images/spacer.gif) |
natanbh1 Colaborador
![Colaborador Colaborador](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/colaborador.gif)
Registrado: Terça-Feira, 15 de Março de 2011 Mensagens: 3093 Localização: Belo Horizonte - MG
|
Enviada: Ter Dez 30, 2014 8:55 am Assunto: |
|
|
Explique melhor a sua segunda dúvida. Você quer excluir o registro no banco ou apenas excluir a linha no memo? _________________ ''A persistência é o caminho para o êxito.''
Charlie Chaplin |
|
Voltar ao Topo |
|
![](templates/subSilver/images/spacer.gif) |
natanbh1 Colaborador
![Colaborador Colaborador](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/colaborador.gif)
Registrado: Terça-Feira, 15 de Março de 2011 Mensagens: 3093 Localização: Belo Horizonte - MG
|
Enviada: Ter Dez 30, 2014 9:07 am Assunto: |
|
|
Se for para excluir o registro no banco siga o exemplo abaixo, substituindo pelos nomes da tabela e campos do seu banco no comando SQL:
Código: | procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
begin
for i := 0 to Memo1.Lines.Count - 1 do
Begin
if Memo1.Lines.Strings[i] = '' then
abort
else
begin
MyQuery1.Close;
MyQuery1.SQL.Clear;
MyQuery1.SQL.Add('Delete from tabela where nome = ' + QuotedStr(Memo1.Lines.Strings[i]));
MyQuery1.ExecSQL;
end;
End;
MessageDlg('Exclusão efetuada com sucesso', mtWarning, [mbOK], 0);
end; |
_________________ ''A persistência é o caminho para o êxito.''
Charlie Chaplin |
|
Voltar ao Topo |
|
![](templates/subSilver/images/spacer.gif) |
jefmachia Novato
![Novato Novato](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/star1.gif)
Registrado: Quinta-Feira, 24 de Outubro de 2013 Mensagens: 93
|
Enviada: Ter Dez 30, 2014 10:58 am Assunto: |
|
|
Obrigado Natanbh1, vou fazer o teste aqui e depois posto se correu tudo certinho. Obrigado amigo. |
|
Voltar ao Topo |
|
![](templates/subSilver/images/spacer.gif) |
jefmachia Novato
![Novato Novato](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/star1.gif)
Registrado: Quinta-Feira, 24 de Outubro de 2013 Mensagens: 93
|
Enviada: Ter Dez 30, 2014 11:25 am Assunto: |
|
|
natanbh1 a solução foi perfeita, funcionando tudo certinho e maravilha.... Obrigado amigo e obrigado a todos que colaboraram feliz ano novo a todos.... |
|
Voltar ao Topo |
|
![](templates/subSilver/images/spacer.gif) |
jefmachia Novato
![Novato Novato](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/star1.gif)
Registrado: Quinta-Feira, 24 de Outubro de 2013 Mensagens: 93
|
Enviada: Ter Dez 30, 2014 3:09 pm Assunto: |
|
|
Antes de fecharem, me deparei com uma outra coisa aqui, agora preciso que seja exibido esses dados em uma memo, tem como fazer isso? A pessoa precisa copiar esses dados e colar em outro lugar. Obrigado |
|
Voltar ao Topo |
|
![](templates/subSilver/images/spacer.gif) |
jefmachia Novato
![Novato Novato](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/star1.gif)
Registrado: Quinta-Feira, 24 de Outubro de 2013 Mensagens: 93
|
Enviada: Dom Jan 04, 2015 6:32 pm Assunto: |
|
|
Pessoal tudo resolvido e já solucionado, so precisava de fazer um loop para mostrar os dados na memo de 50 em 50. Alguem tem alguma ideia de como fazer? |
|
Voltar ao Topo |
|
![](templates/subSilver/images/spacer.gif) |
jefmachia Novato
![Novato Novato](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/star1.gif)
Registrado: Quinta-Feira, 24 de Outubro de 2013 Mensagens: 93
|
Enviada: Dom Jan 04, 2015 7:05 pm Assunto: |
|
|
Pessoal vou colar o código para verem se tem como, estou usando banco access segue abaixo o código que está funcionando em um loop geral de todos, eu preciso colocar um botão para exibir de 150 em 150 registros, ai ele vai apertar um botão próximo, limpa a tela e coloca mais 150 registos no memo..... segue abaixo o código para facilitar. Obrigado desde já.
procedure Tclientes.sBitBtn1Click(Sender: TObject);
begin
sMemo1.Text := '';
ADOQuery1.Close;
ADOQuery1.Parameters.ParamByName('nome').Value := sEdit1.Text + '%';
ADOQuery1.ExecSQL;
ADOQuery1.Active := true;
while not ADOQuery1.Eof do
begin
sMemo1.Lines.Add(ADOQuery1.FieldByname('nome').AsString);
ADOQuery1.Next;
end;
if ADOQuery1.RecordCount = 0 then
begin
MessageDlg('Nada Encontrado!', mtWarning, [mbOK], 0);
end;
end; |
|
Voltar ao Topo |
|
![](templates/subSilver/images/spacer.gif) |
natanbh1 Colaborador
![Colaborador Colaborador](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/colaborador.gif)
Registrado: Terça-Feira, 15 de Março de 2011 Mensagens: 3093 Localização: Belo Horizonte - MG
|
Enviada: Seg Jan 05, 2015 10:13 am Assunto: |
|
|
Tente assim:
Código: | procedure Tclientes.sBitBtn1Click(Sender: TObject);
var
i: Integer;
begin
ADOQuery1.Close;
ADOQuery1.Parameters.ParamByName('nome').Value := sEdit1.Text + '%';
ADOQuery1.ExecSQL;
ADOQuery1.Active := True;
if not ADOQuery1.Eof then
Begin
sMemo1.Clear;
for i := ADOQuery1.RecNo to ADOQuery1.RecNo + 150 do
begin
if not ADOQuery1.Eof then
Begin
sMemo1.Lines.Add(ADOQuery1.FieldByName('nome').Value);
ADOQuery1.Next;
end;
End;
End;
if ADOQuery1.RecordCount = 0 then
MessageDlg('Nada Encontrado!', mtWarning, [mbOK], 0);
end; |
_________________ ''A persistência é o caminho para o êxito.''
Charlie Chaplin |
|
Voltar ao Topo |
|
![](templates/subSilver/images/spacer.gif) |
jefmachia Novato
![Novato Novato](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/star1.gif)
Registrado: Quinta-Feira, 24 de Outubro de 2013 Mensagens: 93
|
Enviada: Seg Jan 05, 2015 6:14 pm Assunto: |
|
|
Natanbh1 olha quase deu certo, dessa forma ele traz 150 e quando aperto o botão ele repete os 150, tipo tenho 9500 registros, eu preciso que ele me mostre a cada apertada 150 por vez tipo ele coloca 150 primeiros registros, depois quando aperto novamente ele mostra mais 150 e dai vai até o final, nesse caso ele está repetindo os 150 primeiros registros e não mostras os outros. Obrigado. |
|
Voltar ao Topo |
|
![](templates/subSilver/images/spacer.gif) |
natanbh1 Colaborador
![Colaborador Colaborador](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/colaborador.gif)
Registrado: Terça-Feira, 15 de Março de 2011 Mensagens: 3093 Localização: Belo Horizonte - MG
|
Enviada: Ter Jan 06, 2015 8:27 am Assunto: |
|
|
Isso está acontecendo porque toda vez que você aperta o botão abre-se novamente a pesquisa. A pesquisa e abertura da tabela tem que ser feita apenas uma vez e ficar fora do botão que mostra 150 em 150.
O código abaixo deve ficar em outro botão ou em algum evento.
Código: | ADOQuery1.Close;
ADOQuery1.Parameters.ParamByName('nome').Value := sEdit1.Text + '%';
ADOQuery1.ExecSQL;
ADOQuery1.Active := True; |
O botão que mostra 150 fica assim:
Código: | procedure Tclientes.sBitBtn1Click(Sender: TObject);
var
i: Integer;
begin
if not ADOQuery1.Eof then
Begin
sMemo1.Clear;
for i := ADOQuery1.RecNo to ADOQuery1.RecNo + 150 do
begin
if not ADOQuery1.Eof then
Begin
sMemo1.Lines.Add(ADOQuery1.FieldByName('nome').Value);
ADOQuery1.Next;
end;
End;
End;
if ADOQuery1.RecordCount = 0 then
MessageDlg('Nada Encontrado!', mtWarning, [mbOK], 0);
end; |
_________________ ''A persistência é o caminho para o êxito.''
Charlie Chaplin |
|
Voltar ao Topo |
|
![](templates/subSilver/images/spacer.gif) |
|