Fórum Alternando entre Letras e Números #215509
19/02/2004
0
Olá pessoal,
Estou fazendo um banco de dados onde preciso fazer o seguinte:
Tenho 2 campos [b:106ff93d0a]CodigoDaDisciplina[/b:106ff93d0a] e [b:106ff93d0a]CodigoLiteral[/b:106ff93d0a]
O CodigoDaDisciplina é um contador automático (está OK)
O CodigoLiteral será igual a [b:106ff93d0a]CodigoLiteral + CodigoDaDisciplina[/b:106ff93d0a] (Eis a questão)
O problema é q, eu quero q ao incluir um novo este campo aceite apenas letras, mas ao salvar ele aceite letras e números, já q este será igual a [b:106ff93d0a]CodigoLiteral + CodigoDaDisciplina[/b:106ff93d0a].
Tem como fazer isso?
Grato,
Ilano. [/b]
Estou fazendo um banco de dados onde preciso fazer o seguinte:
Tenho 2 campos [b:106ff93d0a]CodigoDaDisciplina[/b:106ff93d0a] e [b:106ff93d0a]CodigoLiteral[/b:106ff93d0a]
O CodigoDaDisciplina é um contador automático (está OK)
O CodigoLiteral será igual a [b:106ff93d0a]CodigoLiteral + CodigoDaDisciplina[/b:106ff93d0a] (Eis a questão)
O problema é q, eu quero q ao incluir um novo este campo aceite apenas letras, mas ao salvar ele aceite letras e números, já q este será igual a [b:106ff93d0a]CodigoLiteral + CodigoDaDisciplina[/b:106ff93d0a].
Tem como fazer isso?
Grato,
Ilano. [/b]
Ilanocf
Curtir tópico
+ 0
Responder
Posts
19/02/2004
Aavanco
Ilano,
Você terá que tratar isso por codigo, ou seja, no seu banco de dados deixe o campo CodigoDaDisciplina como está e o CodigoLiteral deixe como Varchar (Dependendo do seu banco de dados).
No campo que so pode aceitar letras, trate a digitação como segue:
[i:8a9326918e]procedure TForm1.DBEditCodigoLiteralKeyPress(Sender: TObject; var Key: Char);
begin
if ( Key In [´0´..´9´,#8,13] ) then
Abort;
// ou if not ( Key In [´a´..´z´, ´A´..´Z´]) depende do que vc quer filtrar.
end;[/i:8a9326918e]
Depois trate a inserção no banco com o evento BeforePost:
[i:8a9326918e]procedure TForm1.IBDataSet1BeforePost(DataSet: TDataSet);
begin
IBDataset1.FieldByName(´CodigoLiteral´).Value:= IBDataset1.FieldByName(´CodigoDaDisciplina´).[b:8a9326918e]AsString [/b:8a9326918e]+ IBDataset1.FieldByName(´CodigoLiteral´).Value;
end;[/i:8a9326918e]
Abraço,
Você terá que tratar isso por codigo, ou seja, no seu banco de dados deixe o campo CodigoDaDisciplina como está e o CodigoLiteral deixe como Varchar (Dependendo do seu banco de dados).
No campo que so pode aceitar letras, trate a digitação como segue:
[i:8a9326918e]procedure TForm1.DBEditCodigoLiteralKeyPress(Sender: TObject; var Key: Char);
begin
if ( Key In [´0´..´9´,#8,13] ) then
Abort;
// ou if not ( Key In [´a´..´z´, ´A´..´Z´]) depende do que vc quer filtrar.
end;[/i:8a9326918e]
Depois trate a inserção no banco com o evento BeforePost:
[i:8a9326918e]procedure TForm1.IBDataSet1BeforePost(DataSet: TDataSet);
begin
IBDataset1.FieldByName(´CodigoLiteral´).Value:= IBDataset1.FieldByName(´CodigoDaDisciplina´).[b:8a9326918e]AsString [/b:8a9326918e]+ IBDataset1.FieldByName(´CodigoLiteral´).Value;
end;[/i:8a9326918e]
Abraço,
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)