Fórum Transformar quot;Códigoquot; em quot;Nomequot; #325421
16/07/2006
0
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
Curtir tópico
+ 0Posts
16/07/2006
Sremulador
Gostei + 0
16/07/2006
Aersoftware
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.
Gostei + 0
16/07/2006
Aersoftware
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.
Gostei + 0
16/07/2006
Aersoftware
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.
Gostei + 0
17/07/2006
Micheus
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;
Gostei + 0
17/07/2006
Aersoftware
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.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)