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

Delphi\SQL


marlonCampos

Pergunta

Estou tentando fazer uma consulta em duas tabelas: pecas e fornecedor.

Na tabela fornecedor tenho o campo cod_fornecedor como chave primária.

Na tabela pecas tenho o campo cod_fornecedor que é chave estrangeira.

Quando eu cadastro uma peça preciso fazer uma validação para saber se realmente aquele fornecedor existe.

Já tentei váriar o código, porém sem sucesso.

Aqui vai um exemplo do que tentei fazer:

ADOQuery1.SQL.Text := 'Select fornecedor.cod_fornecedor, pecas.cod_fornecedor From fornecedor, pecas Where fornecedor.cod_fornecedor = pecas.cod_fornecedor';

ADOQuery1.Close;

ADOQuery1.Open;

if ADOQuery1.IsEmpty then

begin

Application.MessageBox('Fornecedor não encontrado!', PChar(Application.Title), MB_MB_ICONQUESTION + MB_OK);

abort;

end;

Agradeço pela ajuda.

Editado por marlonCampos
Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0
não entendi sua pergunta perfeitamente, esse comando é para rodar quando tiver cadastrando a peça? para ver se o fornecedor digitado existe?

e esse comando ai, roda em qual evento?

se é o que eu entendi, pode tentar com INNER JOIN, Right Join, Left Join

(Como eu não fui muito claro resolvi fazer algumas modificações no primeiro post.)

Esse evento roda no click de um botão ao lado do edit dbedit_cod_fornecedor que é informado pelo usuário antes de mandar gravar o registro.

Eu sei que quando o usuário for salvar o registro e o fornecedor não existir o prórpio banco acusa. Só que eu queria que o usuário verificasse, antes de salvar, se o fornecedor existe para que apareça uma janela informando os dados do fornecedor.

procedure Tfrm_peca.Button1Click(Sender: TObject);

begin

inherited;

ADOQuery1.SQL.Text := 'Select fornecedor.cod_fornecedor, pecas.cod_fornecedor From fornecedor, pecas Where fornecedor.cod_fornecedor = pecas.cod_fornecedor';

ADOQuery1.Close;

ADOQuery1.Open;

if ADOQuery1.IsEmpty then

begin

Application.MessageBox('Fornecedor não encontrado!', PChar(Application.Title), MB_MB_ICONQUESTION + MB_OK);

abort;

end;

Editado por marlonCampos
Link para o comentário
Compartilhar em outros sites

  • 0

no OnExit do DBEdit onde o usuario digita o fornecedor você pode botar:

Select cod_fornecedor from fornecedor where cod_fornecedor = '+QuotedStr(DBEditCOD_fornecedor.text)

o resto é igual, caso não ache o fornecedor digitado ele vai dar a mensagem... não entendi porque você deu um select das duas tabelas , não há porque disso,

Link para o comentário
Compartilhar em outros sites

  • 0

Olha só Frega,

A primeira coisa que eu pensei foi isso que você disse.

Só que quando eu faço assim o adoquery1.isempty sempre retorna true. Quando na verdade existe o fornecedor.

Depois resolvi colocar esse código só que nas linhas abaixo eu coloquei um adoquery1.close e adoquery1.open o que acabava zerando todos os outros campos e como havia sido modificada a string de conexão não era mais permitido salvar algum registro.

Aí o que eu tentei fazer foi o seguinte: acessar as tabelas pecas e fornecedor e comparar o valor do campo cod_fornecedor da tabela pecas com algum valor do campo cod_fornecedor da tabela fornecedor, caso o que o usuário digitasse já fosse atribuído ao campo cod_pecas da tabela pecas.

Só que também não deu certo.

Editado por marlonCampos
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,3k
×
×
  • Criar Novo...