Fórum Transformar quot;Códigoquot; em quot;Nomequot; #325421

16/07/2006

0

Olá pessoal, tudo bem? Espero que sim.

Olha só, eu tenho em um form, 2 campos que coloquei por código (0, 1, 2, 3 e 4). Só que o usuário vai selecionar por nome, tipo:

0: 1ª Série;
1: 2ª Série;
2: 3ª Série;
3: 4ª Série;
4: 5ª Série;

O usuário seleciona uma série, e salva o código. Pra isso usei um TComboBox normal que salva o código num TDbEdit, pra salvar no banco de dados.

Só que o seguinte, esse é um form exclusivo de inserção e edição de dados. Tenho outro form pra visualização, e gostaria de fazer assim, quando o usuário mudar de registro no TDbGrid, um TLabel receber o nome de acordo com o código. Como posso fazer isso?


Aersoftware

Aersoftware

Responder

Posts

16/07/2006

Sremulador

amigo se estiver utilizando o fb você pode fazer um case e concatenat os dados...


Responder

Gostei + 0

16/07/2006

Aersoftware

amigo se estiver utilizando o fb você pode fazer um case e concatenat os dados...


Sim, estou usando o FB, mas como faço isso?

Eu fiz um case pra selecionar, tipo, quando o usuario seleciona a opçõa no TComboBox, ele joga o código no TEdtCodigo. Ficou mais ou menos assim:

case TComboBox.ItemIndex of
0: TEdtCodigo.Text := ´0´
end;

E assim por diante, mas quando fiz um case assim:

case TEdtCodigo.Text of
0: TComboBox.Text := ´1ª Série´;
end;

ee da erro no começo do case. Ou seja, o contrario não consigo fazer, e até preciso usar em dois lugares, um nesse Label de exibição e outro quando o usuário entra no form pra editar registro, quero que o TComboBox receba o nome equivalente ao código cadastrado, pois o campo de código vai ficar oculto.


Responder

Gostei + 0

16/07/2006

Aersoftware

amigo se estiver utilizando o fb você pode fazer um case e concatenat os dados...


Sim, estou usando o FB, mas como faço isso?

Eu fiz um case pra selecionar, tipo, quando o usuario seleciona a opçõa no TComboBox, ele joga o código no TEdtCodigo. Ficou mais ou menos assim:

case TComboBox.ItemIndex of
0: TEdtCodigo.Text := ´0´
end;

E assim por diante, mas quando fiz um case assim:

case TEdtCodigo.Text of
0: TComboBox.Text := ´1ª Série´;
end;

ee da erro no começo do case. Ou seja, o contrario não consigo fazer, e até preciso usar em dois lugares, um nesse Label de exibição e outro quando o usuário entra no form pra editar registro, quero que o TComboBox receba o nome equivalente ao código cadastrado, pois o campo de código vai ficar oculto.


Responder

Gostei + 0

16/07/2006

Aersoftware

Só pra exemplificar melhor. No OnChange do TComboBox eu botei isso:

  case CbSerie.ItemIndex of
    0: DbEdtCodSerie.Text := ´0´; //Série em Branco
    1: DbEdtCodSerie.Text := ´1´; //1ª Série
    2: DbEdtCodSerie.Text := ´2´; //2ª Série
    3: DbEdtCodSerie.Text := ´3´; //3ª Série
    4: DbEdtCodSerie.Text := ´4´; //4ª Série
    5: DbEdtCodSerie.Text := ´5´; //5ª Série
  end;


E funciona. o DbEdtCodSerie recebe os valores designados. Aí tentei o contrario no evenco AfterScrool do ClientDataSet:

  case FrmVerTitulosNacionais.DbEdtSerie.Text of
    0: FrmVerTitulosNacionais.DbTxtSerie.Caption := ´Sem Série Selecionada´;
    1: FrmVerTitulosNacionais.DbTxtSerie.Caption := ´1ª Série´;
    2: FrmVerTitulosNacionais.DbTxtSerie.Caption := ´2ª Série´;
    3: FrmVerTitulosNacionais.DbTxtSerie.Caption := ´3ª Série´;
    4: FrmVerTitulosNacionais.DbTxtSerie.Caption := ´4ª Série´;
    5: FrmVerTitulosNacionais.DbTxtSerie.Caption := ´5ª Série´;
  end;


E isso não funciona.. dá o seguinte erro de compilação:

[Error] UDmDados.pas(184): E2001 Ordinal type required
[Fatal Error] Projhqmx.dpr(12): F2063 Could not compile used unit ´UDmDados.pas´


O tipo de dados do campo DbEdtSerie é SamllInt.


Responder

Gostei + 0

17/07/2006

Micheus

E isso não funciona.. dá o seguinte erro de compilação: [quote:236ac02a7d][Error] UDmDados.pas(184): E2001 Ordinal type required [Fatal Error] Projhqmx.dpr(12): F2063 Could not compile used unit ´UDmDados.pas´
[/quote:236ac02a7d]Ocorre que no case vc não pode utilizar um string. Seria mais adequado vc tutilizar o campo da tabela.
Vamos supor que o nome da tabela (dataset) que vc ligou ao seu DbEdtSerie seja TabTitulosNacionais, e que o campo seja IND_SERIE. Então seu case ficaria:
case TabTitulosNacionaisIND_SERIE.AsInteger of
    0: FrmVerTitulosNacionais.DbTxtSerie.Caption := ´Sem Série Selecionada´;
    1: FrmVerTitulosNacionais.DbTxtSerie.Caption := ´1ª Série´;
    2: FrmVerTitulosNacionais.DbTxtSerie.Caption := ´2ª Série´;
    3: FrmVerTitulosNacionais.DbTxtSerie.Caption := ´3ª Série´;
    4: FrmVerTitulosNacionais.DbTxtSerie.Caption := ´4ª Série´;
    5: FrmVerTitulosNacionais.DbTxtSerie.Caption := ´5ª Série´;
  end;



Responder

Gostei + 0

17/07/2006

Aersoftware

Hmmm.. entendi, valeu micheus, vou testar asssim.

Ontem eu acabei fazendo com o if, mas ele fica muito grande, com o case fica menor e mais fácil de mexer.

Abraços.


Responder

Gostei + 0

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

Aceitar