Estou com 2 problemas e acredito que podem ajudar.
QQ ajuda é bem vinda
Uso o Delphi7 (componentes IB) e o firebird.
Esse método de localizar funcionava, com a biblioteca Zeos) mas agora tem problemas (estou usando IB pq o Zeos não funciona mais) e não descubro porque.
Vai lá a procedure Locate. (funciona e na outra tentativa, não encontra o registro… estranho
if frmPrincipal.TableCadAlunos.Locate('Nome_Aluno',EdNomeAluno.Text,[LOPARTIALKEY,LOCASEINSENSITIVE])then
begin
EdNomeAluno.Text:=frmPrincipal.TableCadAlunos.fieldByName('Nome_Aluno').AsString;
EdNum.Text:=frmPrincipal.TableCadAlunos.fieldByName('Num_Aluno').AsString;
EdAnoLetivo.Text:=frmPrincipal.TableCadAlunos.fieldByName('Ano_Letivo').AsString;
EdSerie.Text:=frmPrincipal.TableCadAlunos.fieldByName('serie').AsString;
EdBimestre.Text:=frmPrincipal.TableCadAlunos.fieldByName('bimestre').AsString;
EdAlunoAtivo.Text:=frmPrincipal.TableCadAlunos.fieldByName('Ativo_(s/n)').AsString;
Panel1.Caption:='Registro Encontrado.';
exit;
end;
O segundo problema é esse:
Leio uma var x do banco assim (está lendo certinho no debug, se ‘S’ ou ‘N’
[code]x:=frmPrincipal.TableCadAlunos.fieldByName(‘Ativo_(s/n)’).AsString; //Se ativo ou não
Agora o x carrega, mas os Ifs não funcionam…No debug, passa direto pelos 2 ifs.
Se o x é ‘S’, ou ‘N’, dá para ver no debug, mas passa direto sem respeitar uma das condições .
if(x='S')then
begin
Panel7.Caption:='Registro "encontrado"';
panel7.Refresh;
exit;
end;
if(x='N')then
begin
Panel7.Caption:='Aviso...Aluno não ativo"';
panel7.Refresh;
exit;
end;
x:=''; //Inicializa a var (vazia)
Bem… deixei no Firebird um valor de caractér=2.
Se espaço em branco interfere, vou ter outro problema em localizar (alias, já esta dando esse problema) no campo Nome… as vezes acha e as vezes não.
Deixei o campo como lowcase, para registrar só minúsculas.
No campo S ou N, está eum maíúsculo em um campo Combobox.
O campo S (caracter, posso corrigir no Firebird para 1 caractér.
Mas e o nome do aluno???
Tenho que dar um tamanho tal que seja possível caber todos os nomes… (Deixei 60 caracteres)
Se o nome for menor que 60 caractéres, aí ficam espaços vazios tb… e na busca vai dar problemas. ( já está dando)
Eu usava ZEOS para conectar com Firebird e não havia esses problemas. Como não funcionam mais, estou usando IB, nativa do Delphi7, para não ficar na mão, mas estou tendo problemas com isso, (falta das manhas).
O if que não estava funcionando com strings (if(x=‘N’) ou if(x=‘S’) o problema era o seguinte.
O campo no Firebird era: Ativo_(S/N). Eu estava usando caractérs especiais e não sabia que não podia. Mudei para Ativo_SN e os ifs funcionaram.
Quanto ao uso de comandos Trim e Like para a busca, vi uns exemplos na internet, mas parecem não estar corretos.
Pode dar um exemplo de como escrever esses comandos para busca?
Agradeço a resposta.
Grde abraço e um ótimo dia para vc.