Data Nula p/SQL, Acentuacao e Trocar dados de campo ao mostr
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.
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é
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
Curtidas 0
Respostas
Aldus
10/06/2005
Sobe
GOSTEI 0
Gandalf.nho
10/06/2005
1) Como vc usa Firebird, experimente a função CASE.
2) TDateField.Clear;
3) Vc setou o CHARACTER SET ao se conectar ao banco?
2) TDateField.Clear;
3) Vc setou o CHARACTER SET ao se conectar ao banco?
GOSTEI 0
Aldus
10/06/2005
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:
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?
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?
GOSTEI 0
Gandalf.nho
10/06/2005
1) O CASE é usado assim:
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
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
GOSTEI 0
Aldus
10/06/2005
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
2) Para todos os campos, uso componentes data-aware
3) Ainda sem solução
GOSTEI 0
Aldus
10/06/2005
O problema de caracteres acentuados está resolvido, na criação no campo coloquei:
E na conexao, em ServerCharSet:
CHARACTER SET WIN1252 COLLATE PXW_INTL850
E na conexao, em ServerCharSet:
WIN1252
GOSTEI 0
Aldus
10/06/2005
Sobe
GOSTEI 0