Fórum Consulta SQL - URGENTE!!! #168937
11/07/2003
0
Olá pessoal,
Estou fazendo um BD em tabela Paradox.
- Tenho as seguintes tabelas, q estão relacionadas:
TB_Livros: CodigoDoLivro, DataDeCadastro, TituloDaObra, ISBN, CodigoDaEditora, Volume, Edicao, Exemplar, AnoDePublicacao, CodigoDaColecao, LocalDePublicacao, Acervo.
TB_Autores: CodigoDoAutor, CodigoDoLivro, CodigoDoAutor2, Autor
Tenho um RadioGroup com as seguintes opções:
- Título da Obra
- Número do ISBN
- Nome do Autor
- Nome da Editora
- Nome da Colecao
A minha consulta está assim:
If RadioGroup1.ItemIndex = 0 Then
Begin
With DMDados.Relacao Do
Begin
Close;
SQL.Clear;
SQL.Add(´SELECT * FROM TBLivros INNER JOIN TBAutores ON TBLivros.CodigoDoLivro = TBAutores.CodigoDoLivro´);
SQL.Add(´WHERE TituloDaObra=:P1´);
ParamByName(´P1´).Value:=Edit1.Text+´¬´;
Open;
End
End
Else
If RadioGroup1.ItemIndex = 1 Then
Begin
With DMDados.Relacao Do
Begin
Close;
SQL.Clear;
SQL.Add(´SELECT * FROM TBLivros INNER JOIN TBAutores ON TBLivros.CodigoDoLivro = TBAutores.CodigoDoLivro´);
SQL.Add(´WHERE ISBN=:P1´);
ParamByName(´P1´).Value:=Edit1.Text;
Open;
End
End
Else
If RadioGroup1.ItemIndex = 2 Then
Begin
With DMDados.Relacao Do
Begin
Close;
SQL.Clear;
SQL.Add(´SELECT * FROM TBLivros INNER JOIN TBAutores ON TBLivros.CodigoDoLivro = TBAutores.CodigoDoLivro´);
SQL.Add(´WHERE CodigoDoAutor=:P1´);
ParamByName(´P1´).Value:=StrToIntDef(Edit2.Text, 0);
Open;
End
End
Else
If RadioGroup1.ItemIndex = 3 Then
Begin
With DMDados.Relacao Do
Begin
Close;
SQL.Clear;
SQL.Add(´SELECT * FROM TBLivros INNER JOIN TBAutores ON TBLivros.CodigoDoLivro = TBAutores.CodigoDoLivro´);
SQL.Add(´WHERE CodigoDaEditora=:P1´);
ParamByName(´P1´).Value:=StrToIntDef(Edit2.Text, 0);
Open;
End
End
Else
If RadioGroup1.ItemIndex = 4 Then
Begin
With DMDados.Relacao Do
Begin
Close;
SQL.Clear;
SQL.Add(´SELECT * FROM TBLivros INNER JOIN TBAutores ON TBLivros.CodigoDoLivro = TBAutores.CodigoDoLivro´);
SQL.Add(´WHERE CodigoDaColecao=:P1´);
ParamByName(´P1´).Value:=StrToIntDef(Edit2.Text, 0);
Open;
End;
End;
Só q não estou conseguindo fazer estas consultas. Resumindo, quero uma consulta q faça uma busca por uma das opções acima para q o usuário localize com mais facilidade o livro q deseja solicitar à biblioteca. Este sistema terá q estar em rede para q todas as salas possam ter acesso à estas consultas e depois será feito ainda uma tela para fazerem a solicitação para o setor responsável, a biblioteca.
Alguém pode me ajudar?
Grato,
Ilano.
Estou fazendo um BD em tabela Paradox.
- Tenho as seguintes tabelas, q estão relacionadas:
TB_Livros: CodigoDoLivro, DataDeCadastro, TituloDaObra, ISBN, CodigoDaEditora, Volume, Edicao, Exemplar, AnoDePublicacao, CodigoDaColecao, LocalDePublicacao, Acervo.
TB_Autores: CodigoDoAutor, CodigoDoLivro, CodigoDoAutor2, Autor
Tenho um RadioGroup com as seguintes opções:
- Título da Obra
- Número do ISBN
- Nome do Autor
- Nome da Editora
- Nome da Colecao
A minha consulta está assim:
If RadioGroup1.ItemIndex = 0 Then
Begin
With DMDados.Relacao Do
Begin
Close;
SQL.Clear;
SQL.Add(´SELECT * FROM TBLivros INNER JOIN TBAutores ON TBLivros.CodigoDoLivro = TBAutores.CodigoDoLivro´);
SQL.Add(´WHERE TituloDaObra=:P1´);
ParamByName(´P1´).Value:=Edit1.Text+´¬´;
Open;
End
End
Else
If RadioGroup1.ItemIndex = 1 Then
Begin
With DMDados.Relacao Do
Begin
Close;
SQL.Clear;
SQL.Add(´SELECT * FROM TBLivros INNER JOIN TBAutores ON TBLivros.CodigoDoLivro = TBAutores.CodigoDoLivro´);
SQL.Add(´WHERE ISBN=:P1´);
ParamByName(´P1´).Value:=Edit1.Text;
Open;
End
End
Else
If RadioGroup1.ItemIndex = 2 Then
Begin
With DMDados.Relacao Do
Begin
Close;
SQL.Clear;
SQL.Add(´SELECT * FROM TBLivros INNER JOIN TBAutores ON TBLivros.CodigoDoLivro = TBAutores.CodigoDoLivro´);
SQL.Add(´WHERE CodigoDoAutor=:P1´);
ParamByName(´P1´).Value:=StrToIntDef(Edit2.Text, 0);
Open;
End
End
Else
If RadioGroup1.ItemIndex = 3 Then
Begin
With DMDados.Relacao Do
Begin
Close;
SQL.Clear;
SQL.Add(´SELECT * FROM TBLivros INNER JOIN TBAutores ON TBLivros.CodigoDoLivro = TBAutores.CodigoDoLivro´);
SQL.Add(´WHERE CodigoDaEditora=:P1´);
ParamByName(´P1´).Value:=StrToIntDef(Edit2.Text, 0);
Open;
End
End
Else
If RadioGroup1.ItemIndex = 4 Then
Begin
With DMDados.Relacao Do
Begin
Close;
SQL.Clear;
SQL.Add(´SELECT * FROM TBLivros INNER JOIN TBAutores ON TBLivros.CodigoDoLivro = TBAutores.CodigoDoLivro´);
SQL.Add(´WHERE CodigoDaColecao=:P1´);
ParamByName(´P1´).Value:=StrToIntDef(Edit2.Text, 0);
Open;
End;
End;
Só q não estou conseguindo fazer estas consultas. Resumindo, quero uma consulta q faça uma busca por uma das opções acima para q o usuário localize com mais facilidade o livro q deseja solicitar à biblioteca. Este sistema terá q estar em rede para q todas as salas possam ter acesso à estas consultas e depois será feito ainda uma tela para fazerem a solicitação para o setor responsável, a biblioteca.
Alguém pode me ajudar?
Grato,
Ilano.
Ilanocf
Curtir tópico
+ 0
Responder
Posts
11/07/2003
Karepa
Caro colega, em primeiro lugar, aconcelho você a utilizar banco de dados, pois sua aplicação irá rodar em rede, isto vai lhe tirar problemas futuros.
Eu faria o código desta meneira, que para mim, fica mais clara para entendimento e mais rápita para execução do aplicativo.
With DMDados.Relacao Do
Begin
Close;
SQL.Clear;
SQL.Add(´SELECT * FROM TBLivros INNER JOIN TBAutores ON TBLivros.CodigoDoLivro = TBAutores.CodigoDoLivro´);
case radioGroup1.itemindex of
0 : begin
SQL.Add(´WHERE TituloDaObra= :P1´);
ParamByName(´P1´).Value:=Edit1.Text+´¬´;
end;
1 : begin
SQL.Add(´WHERE ISBN= :P1´);
ParamByName(´P1´).Value:=Edit1.Text;
end;
2 : begin
SQL.Add(´WHERE CodigoDoAutor= :P1´);
ParamByName(´P1´).Value:=StrToIntDef(Edit2.Text, 0);
end;
3 : begin
SQL.Add(´WHERE CodigoDaEditora= :P1´);
ParamByName(´P1´).Value:=StrToIntDef(Edit2.Text, 0);
end;
4 : begin
SQL.Add(´WHERE CodigoDaColecao= :P1´);
ParamByName(´P1´).Value:=StrToIntDef(Edit2.Text, 0);
end;
end;
Open;
End;
Pelo que verifiquei no seu código, estua tudo correto .
verifique se os livros estão com o código de autor informado no seu cadastro.
qq coisa mantenha contato em pvt, pois está parecendo erro de base de dados.
espero ter ajudado.
Eu faria o código desta meneira, que para mim, fica mais clara para entendimento e mais rápita para execução do aplicativo.
With DMDados.Relacao Do
Begin
Close;
SQL.Clear;
SQL.Add(´SELECT * FROM TBLivros INNER JOIN TBAutores ON TBLivros.CodigoDoLivro = TBAutores.CodigoDoLivro´);
case radioGroup1.itemindex of
0 : begin
SQL.Add(´WHERE TituloDaObra= :P1´);
ParamByName(´P1´).Value:=Edit1.Text+´¬´;
end;
1 : begin
SQL.Add(´WHERE ISBN= :P1´);
ParamByName(´P1´).Value:=Edit1.Text;
end;
2 : begin
SQL.Add(´WHERE CodigoDoAutor= :P1´);
ParamByName(´P1´).Value:=StrToIntDef(Edit2.Text, 0);
end;
3 : begin
SQL.Add(´WHERE CodigoDaEditora= :P1´);
ParamByName(´P1´).Value:=StrToIntDef(Edit2.Text, 0);
end;
4 : begin
SQL.Add(´WHERE CodigoDaColecao= :P1´);
ParamByName(´P1´).Value:=StrToIntDef(Edit2.Text, 0);
end;
end;
Open;
End;
Pelo que verifiquei no seu código, estua tudo correto .
verifique se os livros estão com o código de autor informado no seu cadastro.
qq coisa mantenha contato em pvt, pois está parecendo erro de base de dados.
espero ter ajudado.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)