é o seguinte eu tenho 3 tabelas: carro, produto e carroxprod, onde tem vários vêículos cadastrados e produtos e na tabela carroxprod eu faço o relacionamento entre essas duas tabelas para mostrar em uma consulta quais produtos são compatíveis com determinado carro, e para os produtos que são compatíveis com todos os carros eu mando salvar no campo carro da tabela carroxprod o codigo "0" ai para fazer a consulta eu utilizei a seguinte sql:
qrprod.sql.add('from carro.db as C, carroxprod.db as R, produtos.db as P, fornecedor.db as F, categoria.db as CT, montadora as M, veiculo as V');
qrprod.sql.add('where P.Categoria=CT.Cod_cat and P.Forn_cat=F.Cod_forn and C.Cod_car=R.Cod_carro and P.Cod_prod=R.Cod_prod and C.montadora=M.Cod_Montadora and C.Veiculo=V.Cod_veiculo and C.Montadora='+aspa+Edit1.Text+aspa+' ');
qrprod.SQL.Add('or R.Cod_carro=''0'' and P.Categoria=CT.Cod_cat and P.Forn_cat=F.Cod_forn and P.Cod_prod=R.Cod_prod and C.montadora=M.Cod_Montadora and C.Veiculo=V.Cod_veiculo and C.Montadora='+aspa+Edit1.Text+aspa+'');
qrprod.open;
qrprod.Active;
end;
porém quando eu mando executar esta consulta o programa fica uns 2 minutos pensando para dar a resposta ou então ele trava e fala que não tem espaço sulficiente em disco (não sei por que), porém se eu tirar a linha onde começa o "or" a consulta funciona normal:
qrprod.sql.add('from carro.db as C, carroxprod.db as R, produtos.db as P, fornecedor.db as F, categoria.db as CT, montadora as M, veiculo as V');
qrprod.sql.add('where P.Categoria=CT.Cod_cat and P.Forn_cat=F.Cod_forn and C.Cod_car=R.Cod_carro and P.Cod_prod=R.Cod_prod and C.montadora=M.Cod_Montadora and C.Veiculo=V.Cod_veiculo and C.Montadora='+aspa+Edit1.Text+aspa+' ');
qrprod.open;
qrprod.Active;
end;
alguém pode me ajudar eu so to com esse problema para resolver no meu programa se alguém puder me ajudar eu fico muito grato
eu já pensei na ípotese de quando o produto for compatível com todos os veiculos criar um laço que vai adicionar cada veiculo na tabela carroxprod porém não iria fucnionar pois se eu adicioinar um vêículo novo esse mesmo não vai ser compatível com o produto que anteriormente eu marquei como compatível a todos vêículos.
Pergunta
Kindelis
é o seguinte eu tenho 3 tabelas: carro, produto e carroxprod, onde tem vários vêículos cadastrados e produtos e na tabela carroxprod eu faço o relacionamento entre essas duas tabelas para mostrar em uma consulta quais produtos são compatíveis com determinado carro, e para os produtos que são compatíveis com todos os carros eu mando salvar no campo carro da tabela carroxprod o codigo "0" ai para fazer a consulta eu utilizei a seguinte sql:
var aspa:string;
begin
aspa:='''';
qrprod.close;
qrprod.sql.Clear;
qrprod.sql.add('select P.Cod_prod, P.Cod_cat, P.Descricao, P.Preco_venda, P.Qtd_disp, F.Nome, CT.Categoria, C.Cod_car, Foto');
qrprod.sql.add('from carro.db as C, carroxprod.db as R, produtos.db as P, fornecedor.db as F, categoria.db as CT, montadora as M, veiculo as V');
qrprod.sql.add('where P.Categoria=CT.Cod_cat and P.Forn_cat=F.Cod_forn and C.Cod_car=R.Cod_carro and P.Cod_prod=R.Cod_prod and C.montadora=M.Cod_Montadora and C.Veiculo=V.Cod_veiculo and C.Montadora='+aspa+Edit1.Text+aspa+' ');
qrprod.SQL.Add('or R.Cod_carro=''0'' and P.Categoria=CT.Cod_cat and P.Forn_cat=F.Cod_forn and P.Cod_prod=R.Cod_prod and C.montadora=M.Cod_Montadora and C.Veiculo=V.Cod_veiculo and C.Montadora='+aspa+Edit1.Text+aspa+'');
qrprod.open;
qrprod.Active;
end;
porém quando eu mando executar esta consulta o programa fica uns 2 minutos pensando para dar a resposta ou então ele trava e fala que não tem espaço sulficiente em disco (não sei por que), porém se eu tirar a linha onde começa o "or" a consulta funciona normal:
var aspa:string;
begin
aspa:='''';
qrprod.close;
qrprod.sql.Clear;
qrprod.sql.add('select P.Cod_prod, P.Cod_cat, P.Descricao, P.Preco_venda, P.Qtd_disp, F.Nome, CT.Categoria, C.Cod_car, Foto');
qrprod.sql.add('from carro.db as C, carroxprod.db as R, produtos.db as P, fornecedor.db as F, categoria.db as CT, montadora as M, veiculo as V');
qrprod.sql.add('where P.Categoria=CT.Cod_cat and P.Forn_cat=F.Cod_forn and C.Cod_car=R.Cod_carro and P.Cod_prod=R.Cod_prod and C.montadora=M.Cod_Montadora and C.Veiculo=V.Cod_veiculo and C.Montadora='+aspa+Edit1.Text+aspa+' ');
qrprod.open;
qrprod.Active;
end;
alguém pode me ajudar eu so to com esse problema para resolver no meu programa se alguém puder me ajudar eu fico muito grato
eu já pensei na ípotese de quando o produto for compatível com todos os veiculos criar um laço que vai adicionar cada veiculo na tabela carroxprod porém não iria fucnionar pois se eu adicioinar um vêículo novo esse mesmo não vai ser compatível com o produto que anteriormente eu marquei como compatível a todos vêículos.
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
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.