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

(Resolvido) SQL no Delphi


Sr. Mendes - Inaldo

Pergunta

Galera alguém pode me ajudar ai com um problema que eu estou tendo, é o seguinte:

no meu programa tem uma tela de cadastro de ocorrências, e tem o número do atendimentos que tem que ser preenchida pelo usuário ...

O cadastro está ok, a consulta também, só que os números de atendimentos podem ser cadastrados mais de uma vez, esta ocorrendo de ter atendimento com o número repetido

eu queria fazer um select no delphi que ele puchasse do banco os números de atendimentos para verificar se esta sendo ou não repetido

inicialmente pensei em fazer um

QUERY.SQL.ADD ('SELECT COUNT(*) FROM NOME_TABELA WHERE CODIGO_ATENDIMENTE = ' +DBDIT.TEXT);

QUERY.OPEN;

IF MessageDlg('Atendimento já existe, Deseja Continuar?', mtconfirmation,[mbyes, mbno],0) = mryes then...

ai eu me enganchei nesse ponto, alguém pode me ajudar?

Desde já agradeço!

Link para o comentário
Compartilhar em outros sites

11 respostass a esta questão

Posts Recomendados

  • 0
O cadastro está ok, a consulta também, só que os números de atendimentos podem ser cadastrados mais de uma vez, esta ocorrendo de ter atendimento com o número repetido

Na Query

QUERY.SQL.CLEAR;
QUERY.SQL.ADD ('SELECT MAX (CAST(CODIGO_ATENDIMENTO AS INTEGER) FROM NOME_TABELA);
Para usar
QUERY.Active := true;
   Label1.Caption := ' Código de Atendimento =  ' + inttostr(QUERYMAXOFCODIGO_ATENDIMENTO.Value+1);
   QUERY.Active := false;

OBS: desta maneira voce não terá um código repetido, pois ele pegará o maior existente e somará mais 1

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

eu estava fazendo pra ele

tipo verificar no banco através de um select count quantos registros tem com o número digitado no DBEdit, só que esta dando erro na sintaxe do sql eu fiz da seguint forma

qGeral.SQL.Clear;

qGeral.SQL.Text := 'SELECT COUNT(*) FROM LUIZEDUARDO.SIAL WHERE CD_ATENDIMENTO ='+DBEdit2.Text;

qGeral.Open;

no delphi ele diz que o erro está no sinal de igual que vem depois do CD_ATENDIMENTO

e depois disso eu iria fazer um if com um showMessage falando que o código já existe, e perguntando se ele deseja continuar ou voltar e corrigir o código, porque ele vai ter a opação de permanecer também com o código já existente,

se quiser me da uma ajuda com esse IF ai eu fico muito grato! ...

e desde já agradeço ai pela ajuda!

Link para o comentário
Compartilhar em outros sites

  • 0

Um exemplo o uso da sintaxe:

SELECT COUNT( * ) FROM TABELA WHERE COD = 'UNI2'

no seu caso

qGeral.SQL.Clear;
qGeral.SQL.Text := 'SELECT COUNT(*) FROM LUIZEDUARDO.SIAL WHERE CD_ATENDIMENTO ='+DBEdit2.Text;
qGeral.Open;
Observe no exemplo acima, que o conteudo do DBEdit2.Text terá que estar entre apostrofes então ficaria assim:
qGeral.SQL.Clear;
qGeral.SQL.Text := 'SELECT COUNT(*) FROM LUIZEDUARDO.SIAL WHERE CD_ATENDIMENTO ='+'''' + dBEdit2.Text + '''';
qGeral.Open;
Vale lembrar que este DBEdit2.Text estiver linkado com a mesma tabela que estiver dentro da select, voce não terá valor algum nele. Voce deveria passar um valor para a select atravez de um Edit
qGeral.SQL.Clear;
qGeral.SQL.Text := 'SELECT COUNT(*) FROM LUIZEDUARDO.SIAL WHERE CD_ATENDIMENTO ='+'''' + Edit1.Text + '''';
qGeral.Open;

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Jhonas ... eu agradeço bastante ai pela sua ajuda, mas não deu certo cara, :blink: rsrsrsrsr ...

ainda continua dando o seguinte erro: 'table is read only' --> tabela somente leitura.

já tentei de todos os jeitos mas não da certo o erro persiste. :(

e o que eu quero é só que ele procure no banco se já existe o código que eu digitar no DBEdit...

:wacko:

Link para o comentário
Compartilhar em outros sites

  • 0

consegui aqui fazer de um jeito que ele passou do comando do sql

foi dessa forma

with qAtende do
          begin
            SQL.Text := 'SELECT COUNT (*) FROM LUIZEDARDO.SIAL WHERE CD_ATENDIMENTO='+ QuotedStr(DBEdit2.Text);
          end;

só que agora eu to enganchado no IF, porque eu queria fazer um IF assim: Se o resultado do select > 0 então faça a condição

só que eu não sei o que colocar nesse "resultado do select"

eu to fazendo assim e ta dando erro

if qAtende.FieldByName[0].AsInteger > 0 then

//condição

pode me ajudar com esse IF ai?

Agradeço!

Link para o comentário
Compartilhar em outros sites

  • 0

Então tente assim :

if (qAtende.FieldByName('CD_ATENDIMENTO').AsInteger) > 0 then
   begin

       if MessageDlg('Atendimento já existe, deseja continuar ?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
          begin
             //  comandos
          end
       else
          begin
             //  comandos
          end;
   end;

abraço

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...