Campo Lookup com where no SQL quot;em brancoquot;

Delphi

20/04/2005

Colegas..

ò eu de novo, com esse problema em lookups..rss..

seguinte..

Tenho uma tabela IA0100, nesta tabela eu gravo um código para embalagens.

No cadastro (EB0100) de embalagens, tem um campo chamado C_UNITARIO, neste campo eu gravo um código que é cadastrado numa tabela de Unidades de Medida. Neste mesmo cadastro tenho um outro campo chamado C_EMBALAGEM e C_QTD.
Adescrição do registro na tela fica assim ex:

1 Caixa(s) com 6 Unidade(s);
1 Caixa(s) com 5 Frasco(s);
1 Rolo(s) com 100 metro(s);

Quando eu estou no grid de IA0100, tenho um campo chamado C_EMBALAGEM que traz aa descrições das embalagens acima, para o usuário selecionar uma delas.

Só lembrando, no cadastro de Materiais, eu tenho um Campo C_UNITARIO que tb é cadastrado na tabela de Unidades de medida.

de acordo com este código C_UNITARIO, eu dou um select com where na tabela EB0100.

assim :

se o Material tiver UN (Unidade(s)), então meu select deve trazer todas as embalagens que o C_UNITARIO for UN, até aí funciona legal, o problema está quando eu insiro um outro registro que não for da mesma unidade, no grid o campo fica em branco.

Como resolver este problema?


Cabelo

Cabelo

Curtidas 0

Respostas

Cabelo

Cabelo

20/04/2005

sobe..


GOSTEI 0
Rafael Santana

Rafael Santana

20/04/2005

bom dia, amigo...

você poderia postar seu select aqui e a forma como vc cadastra as unidades?

obrigado


GOSTEI 0
Cabelo

Cabelo

20/04/2005

Vamos lá..

Select

select C_COD_EMBALAGEM, C_DESC_EMBALAGEM from EB0100 where
C_COD_EMB_MINIMA = ´´´+cdsIN0100.fieldbyname(´C_COD_EMB_MINIMA´).asstring+´´´ order by C_DESC_EMBALAGEM

Este é o select para mostrar asembalagens compatíveis com o determinado Material.

este select está no evento Scroll do clientdataset dos materiais.

Não entendí a dúvida no insert..]

Vc quer saber quais são os campos?

Código - PK
descrição


GOSTEI 0
Cabelo

Cabelo

20/04/2005

Sobe.. :(


GOSTEI 0
Cabelo

Cabelo

20/04/2005

Sobe de novo... :cry:


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

20/04/2005

vc escolhe o material, depois a unidade e só depois a embalagem. é isso?

poste a estrutura das tabelas e como elas são relacionadas. assim ficará mais fácil te ajudar.


GOSTEI 0
Cabelo

Cabelo

20/04/2005

Não..

Você escolhe o material, aí eu dou um select na tabela de embalagens para selecionar somente as embalagens em que o campo C_UNITARIO coincide com o campo C_EMB_MINIMA na tabela dos materiais..

mas até aí funciona bem..

O problema começa quando tenho vários registros, assm :

1 Teste 1 UN Caixa(s) com 10 Unidade(s)
1 Teste 2 UN Unidade(s)
1 Teste 3 FR Caixa(s) com 3 Frascos(s)

na tabela eu armazeno da forma que está acima..mas..

no grid o 3º item, no campo da embalagem, fica em branco, pois o unitário dele é diferente do registro em que o DataSet está ponteirado..


GOSTEI 0
Cabelo

Cabelo

20/04/2005

sobe..


GOSTEI 0
Cabelo

Cabelo

20/04/2005

sobe de novo.. :(


GOSTEI 0
Christian_adriano

Christian_adriano

20/04/2005

Olá Colega Cabelo,

Tenta o código seguinte:


with DataSet do begin
   Close;
   SQL.Text := ´select EM.C_COD_EMBALAGEM, EM.C_DESC_EMBALAGEM from EB0100 EM where´
   SQL.Add(´EM.C_COD_EMB_MINIMA = :COD order by C_DESC_EMBALAGEM´);
     // Condição pelo "C_UNITARIO" da tabela de Materiais já Consultada
   ParamByName(´COD´).asInteger := cdsMATERIAIS.FieldByName(´C_UNITARIO´).asInteger; 
   Open;
end


Se não funciona me dê um toque para resolvermos isso.

t+

Christian.


GOSTEI 0
Cabelo

Cabelo

20/04/2005

Colega.. christian_adriano

Muito Obrigado pela atenção...

Mas o select q você me passou eu já faço, não usando parâmetros, mas usando o fieldbyname direto.. o problema está no segunte.. tenho que ´puxar´ os registros de três tabelas distintas sendo que duas não possuem relacionamento nenhum..

Acho que meu problema está em achar o evento certo para colocar os selects..

O problema começa quando tenho vários registros, assim : 1 Teste 1 UN Caixa(s) com 10 Unidade(s) 1 Teste 2 UN Unidade(s) 1 Teste 3 FR Caixa(s) com 3 Frascos(s)


Eu tenho a tabela de materiais cujo um dos campos é C_UNITARIO. Tenho uma outra tabela a de embalagens, cujo um campo também é C_UNITARIO. O problema está quando eu uso este material em uma terceira tabela.. Tenho um GRID com dois campos lookups, sendo estes campos C_MATERIAL e C_EMBALAGEM, que será selecionado pelo usuário para realizar o cadastro de entrada de material.

Na hora de inserir o material, funciona blz, pois quando eu seleciono um material, eu executo um outro select, na tabela de embalagens, para trazer ´somente as embalagens´ que coincidem com o C_UNITARIO. (este é o select que você me passou), até aqui tudo beleza.

O problema começa quando tenho vários registros nesta 3ª tabela, e os C_UNITARIO´s não coincidem.

Isto é o select da embalagem fica ponteirada no 1º registro, que coincide com o primeiro material. Quando o C_UNITARIO é diferente do primeiro fica com a embalagem em branco..

o resultado da consulta acima :

C_QTD | C_DESC | C_UNITARIO | C_EMBALAGEM 1 | Teste 1 | UN | Caixa(s) com 10 Unidade(s) 1 | Teste 2 | UN | Unidade(s) 1 | Teste 3 | FR |´a descrição da embalagem fica em branco´


Agradeço a atenção, mas tem outra sugestão?


GOSTEI 0
Cabelo

Cabelo

20/04/2005

sobe..


GOSTEI 0
Cabelo

Cabelo

20/04/2005

sobe...


GOSTEI 0
Cabelo

Cabelo

20/04/2005

sobe, última vez.... :(


GOSTEI 0
POSTAR