Fórum Data Nula p/SQL, Acentuacao e Trocar dados de campo ao mostr #284333

10/06/2005

0

Bom dia amigos, três probleminhas estão me deixando de cabelo em pé.

1) No banco guardo o ItemIndex de um Combo para selecionar um valor 0-Sim 1-Nao, eu gostaria de mostrar num dbgrid o valor convertido, ou seja, Sim ou Nao. Eu tenho uma função genérica de consulta, que cria os campos em e atribui a eles os tamanhos e no caso de valores decimais, atribuo também a máscara. Só que neste caso tenho que mudar o conteúdo, como poderia fazer isso? Segue um trecho do código de onde eu faria essa troca.

DM.CDS_Areceber.Close ;
   DM.SQL_Areceber.CommandText := ´SELECT * FROM Areceber WHERE CODEMP=:vCodemp AND CODCLI=:vCodCli ORDER BY QUITADO,DATVEN´;
   DM.SQL_Areceber.ParamByName(´vCodEmp´).AsInteger   := fMenu.CodEmpSelec ;
   DM.SQL_Areceber.ParamByName(´vCodCli´).AsCurrency  := VarCodCli ;
   DM.CDS_Areceber.Open ;
   TFloatField(DM.CDS_Areceber.FieldByName(´VALDOC´)).DisplayFormat    := ´,#0.00´;
   TFloatField(DM.CDS_Areceber.FieldByName(´JUROS´)).DisplayFormat     := ´,#0.00´;
   TFloatField(DM.CDS_Areceber.FieldByName(´DESCONTO´)).DisplayFormat  := ´,0.00´;
   TFloatField(DM.CDS_Areceber.FieldByName(´TOTREC´)).DisplayFormat    := ´,0.00´;
   if TStringField(DM.CDS_Areceber.FieldByName(´QUITADO´)).Value = 0 then
      TStringField(DM.CDS_Areceber.FieldByName(´QUITADO´)).Text := ´Sim´
   else
      TStringField(DM.CDS_Areceber.FieldByName(´QUITADO´)).Text := ´Nao´;


2) Quando um usuário cancela um pagamento de uma conta, eu tenho que ´zerar´ a data de recebimento no banco. Como atribuo um valor nulo a data para updatar.

3) Utilizo charset WIN1252 e não consigo gravar acentuação, o que devo mudar para conseguit?

Utilizo delphi 7, firebird e dbexpress

Até


Aldus

Aldus

Responder

Posts

10/06/2005

Aldus

Sobe


Responder

Gostei + 0

10/06/2005

Gandalf.nho

1) Como vc usa Firebird, experimente a função CASE.

2) TDateField.Clear;

3) Vc setou o CHARACTER SET ao se conectar ao banco?


Responder

Gostei + 0

10/06/2005

Aldus

Olá

1) Não entendi a função CASE, na verdade não sei como fazer para trocar o 0 pelo Sim e o 1 pelo Não, esse trecho que coloquei é apenas para ilustrar,mas não funciona:

if TStringField(DM.CDS_Areceber.FieldByName(´QUITADO´)).Value = 0 then 
      TStringField(DM.CDS_Areceber.FieldByName(´QUITADO´)).Text := ´Sim´ 
   else 
      TStringField(DM.CDS_Areceber.FieldByName(´QUITADO´)).Text := ´Nao´;


2) Utilizo componentes TDateEdit, e mesmo usando EditDatPag.Clear ocorreu o mesmo erro.

3) Ao criar o bd no ibexpert coloquei p charset WIN1252, mas na conexão não. Uso sqlconnection em qual propriedade insiro o CHARACTER SET?


Responder

Gostei + 0

10/06/2005

Gandalf.nho

1) O CASE é usado assim:
SELECT CASE WHEN QUITADO = 1 THEN ´Sim´ ELSE ´Não´ FROM Areceber


2) Tente usar o Clear no TField e não no controle data-aware.

3) Como não uso o DBExpress não sei te dizer onde entrar com essa informação, mas dê uma pesquisadinha no fórum que deve achar como ou olhe no help do Delphi


Responder

Gostei + 0

10/06/2005

Aldus

1) Uso firebird e dá um erro na instrução SQL no ´FROM´ , ate´porque passo no comandtext entre ´ ´, e ali tem valores também entre ´ ´, não sei como ficaria, mas daquela forma seria listado somente o campo quitado, não é?

2) Para todos os campos, uso componentes data-aware

3) Ainda sem solução


Responder

Gostei + 0

10/06/2005

Aldus

O problema de caracteres acentuados está resolvido, na criação no campo coloquei:

CHARACTER SET WIN1252 COLLATE PXW_INTL850 


E na conexao, em ServerCharSet:

WIN1252



Responder

Gostei + 0

11/06/2005

Aldus

Sobe


Responder

Gostei + 0

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

Aceitar