Como montar a string do SQL

Delphi

16/01/2005

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

Curtidas 0

Respostas

Evandro_araujo

Evandro_araujo

16/01/2005

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


GOSTEI 0
Thomaz_prg

Thomaz_prg

16/01/2005

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¬´


GOSTEI 0
Objetivacreator

Objetivacreator

16/01/2005

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.


GOSTEI 0
Objetivacreator

Objetivacreator

16/01/2005

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.


GOSTEI 0
Thomaz_prg

Thomaz_prg

16/01/2005

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;


GOSTEI 0
Objetivacreator

Objetivacreator

16/01/2005

Valeu Thomaz,

Aos poucos vou entendendo os comandos em SQL

Abraços.


GOSTEI 0
POSTAR