Transformar quot;Códigoquot; em quot;Nomequot;
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?
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
Curtidas 0
Respostas
Sremulador
16/07/2006
amigo se estiver utilizando o fb você pode fazer um case e concatenat os dados...
GOSTEI 0
Aersoftware
16/07/2006
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.
GOSTEI 0
Aersoftware
16/07/2006
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.
GOSTEI 0
Aersoftware
16/07/2006
Só pra exemplificar melhor. No OnChange do TComboBox eu botei isso:
E funciona. o DbEdtCodSerie recebe os valores designados. Aí tentei o contrario no evenco AfterScrool do ClientDataSet:
E isso não funciona.. dá o seguinte erro de compilação:
O tipo de dados do campo DbEdtSerie é SamllInt.
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
Micheus
16/07/2006
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;
GOSTEI 0
Aersoftware
16/07/2006
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.
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