Fórum Como montar a string do SQL #265530

16/01/2005

0

Galera

Preciso montar uma string de comando sql que me retorne todos os registros de uma tabela cujo campo controle esteja vazio e outra string cujo campo controle contenha a letra B.


Estou usando SqlDataSet1 + DataSetProvider + ClienteDataSet + DataSource.

Grato a todos.

Objetiva Creator


Objetivacreator

Objetivacreator

Responder

Posts

16/01/2005

Evandro_araujo

select * from tabela where controle is null and
controle like ´B¬´


Responder

Gostei + 0

16/01/2005

Thomaz_prg

Colega Evandro a string que vc passou não retornaria dados, pois, se o campo controle está vazio, ele jamais irá conter o caracter B, e vc colocou apenas os que começam com B, e não que contenham B.

Acredito que seja isso o que o colega objectivacreator quer:

Para retornar vazio:

select * from tabela where controle is null



Para retornar os que o campo controle Contenham a letra B

select * from tabela where Upper(controle) like ´¬B¬´


Responder

Gostei + 0

16/01/2005

Objetivacreator

Caro amigo Thomaz o comando que vc passou esta dando problemas,
segue abaixo o código que estou usando ok.

Dm.cds_Servico.Close;
Dm.SQLDataSet1.Close;
Dm.SQLDataSet1.CommandText := ´select * from OS where Upper(controle) like ´¬B¬´;
Dm.SQLDataSet1.Open;
Dm.cds_Servico.Open;

O Erro.
[Error] UFrmModOrcamento.pas(133): Illegal character in input file: ´¬´ ($25)

Bom, se puder me ajudar em mais esta rotina eu agradeço.
E o seguinte.
Estou construindo uma aplicação de Orçamento.

No Form eu tenho um Grid, um botão de assistencia, na grid mostro todos os serviços cadastrados.

Quando clico no botão assistência vou a outro form (Assistencia) onde devo informar os laudos para o serviço selecionado no grid.

Vou Resumir.
Em um serviço selecionado no grid, tenho que cadastrar os laudos, que podem ser muitos, pois estes laudos servem para indicar todos os serviços realizados no produto (relógio de ponto por exemplo).
Acontece que eu quero fazer o seguinte, quando for entrar no form de cadastro de assistencia, mostrar na grid do form de assistencia somente os laudos cadastrados para este serviço e permitir cadastrar outros laudos.

Tentei usar o Mestre/Detail, mas esta dando erro quando informo os dados do laudo e mando salvar:

Relacão Mestre/Detail
Cadastrado como

tenho um ClienteDataSet para SErvico e Laudo
No ClienteDataSet do Laudo, tenho a propriedade MasterSource para ds_Os_Servico, MasterFields com a string CodOs -> CodOrcamento
sendo os dois campos chave primaria.

Codigo de novo Laudo
Dm.Os_Laudo.Insert

Codigo de Salvar laudo
Dm.cds_Laudo.FieldByName(´CodStatus´).AsInteger := Dm.cds_Servico.FieldByName(´CodStatus´).AsInteger; // Gravar o Codigo do Status contido no registro ativo do serviço
Dm.cds_Laudo.ApplyUpdates(-1);

O erro:
EDataBaseError with message ´DBX Error: no mapping for error code found´

O master/detail sera necessário ou tem outro jeito ???

Agradeço a sua atenção

Obrigado
Objetiva Creator.


Responder

Gostei + 0

16/01/2005

Objetivacreator

Caro amigo Thomaz o comando que vc passou esta dando problemas,
segue abaixo o código que estou usando ok.

Dm.cds_Servico.Close;
Dm.SQLDataSet1.Close;
Dm.SQLDataSet1.CommandText := ´select * from OS where Upper(controle) like ´¬B¬´;
Dm.SQLDataSet1.Open;
Dm.cds_Servico.Open;

O Erro.
[Error] UFrmModOrcamento.pas(133): Illegal character in input file: ´¬´ ($25)

Bom, se puder me ajudar em mais esta rotina eu agradeço.
E o seguinte.
Estou construindo uma aplicação de Orçamento.

No Form eu tenho um Grid, um botão de assistencia, na grid mostro todos os serviços cadastrados.

Quando clico no botão assistência vou a outro form (Assistencia) onde devo informar os laudos para o serviço selecionado no grid.

Vou Resumir.
Em um serviço selecionado no grid, tenho que cadastrar os laudos, que podem ser muitos, pois estes laudos servem para indicar todos os serviços realizados no produto (relógio de ponto por exemplo).
Acontece que eu quero fazer o seguinte, quando for entrar no form de cadastro de assistencia, mostrar na grid do form de assistencia somente os laudos cadastrados para este serviço e permitir cadastrar outros laudos.

Tentei usar o Mestre/Detail, mas esta dando erro quando informo os dados do laudo e mando salvar:

Relacão Mestre/Detail
Cadastrado como

tenho um ClienteDataSet para SErvico e Laudo
No ClienteDataSet do Laudo, tenho a propriedade MasterSource para ds_Os_Servico, MasterFields com a string CodOs -> CodOrcamento
sendo os dois campos chave primaria.

Codigo de novo Laudo
Dm.Os_Laudo.Insert

Codigo de Salvar laudo
Dm.cds_Laudo.FieldByName(´CodStatus´).AsInteger := Dm.cds_Servico.FieldByName(´CodStatus´).AsInteger; // Gravar o Codigo do Status contido no registro ativo do serviço
Dm.cds_Laudo.ApplyUpdates(-1);

O erro:
EDataBaseError with message ´DBX Error: no mapping for error code found´

O master/detail sera necessário ou tem outro jeito ???

Agradeço a sua atenção

Obrigado
Objetiva Creator.


Responder

Gostei + 0

17/01/2005

Thomaz_prg

Faça assim:

Dm.cds_Servico.Close;
Dm.SQLDataSet1.Close;
Dm.SQLDataSet1.CommandText := ´select * from OS where Upper(controle) like ´+QuotedStr(´¬B¬´);
Dm.SQLDataSet1.Open;
Dm.cds_Servico.Open;


ou então:

Dm.cds_Servico.Close;
Dm.SQLDataSet1.Close;
Dm.SQLDataSet1.CommandText := ´select * from OS where Upper(controle) like ´+#39+´¬B¬´+39;
Dm.SQLDataSet1.Open;
Dm.cds_Servico.Open;


Responder

Gostei + 0

17/01/2005

Objetivacreator

Valeu Thomaz,

Aos poucos vou entendendo os comandos em SQL

Abraços.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar