Fórum SQL Delphi7 + Interbase #466231
08/01/2014
0
Olá pessoal.
Tive que migrar do Zeos para os componentes IB e estou levando uma surra daquelas.
Pelos grids dá para ver que as tabelas estão "ON" com o Delphi7.
Meu problema a está nos comandos SQL. como abaixo:
Há 2 problemas com essa IBQuery.
Primeiro.
Se colocar Query1.Open no fibnal do código dá uma msg de erro. abaixo:
Se deixo essa linha, dá problema e uma msg aparece como abaixo:
ProjectPrincipal.exec raised exception class EIBInterbaseError whith message Dynamic SQL Error. SQL Error Code=-204
Table unknow TABLEPROVAT at line1, column 27.
Se tiro essa linha, compila, mas nao está correto.
O que poder ser?
Segundo problema>
Tenho 2 RadioButtons para escolher qual método de busca utilizar. por nome, ou filtrar pelos valores de campos.
O Grid não atualiza e mostra todos os cadastro, não respeitando a condição dos campos em ParambyName.
Segue o código de busca, por locate e por SQL
Se puderem auxiliar onde estou errando, agradeço e muito.
procedure TfrmCadAlunos.btnLocalizarClick(Sender: TObject);
begin
frmPrincipal.TableCadAlunos.First;
if(frmPrincipal.TableCadAlunos.IsEmpty)then
begin
Panel1.Caption:='Tabela Cadastro de Alunos, vazia';
exit;
end;
if(RadioLocNome.Checked=true)then
begin
if(EdNomeAluno.Text='')then
begin
Panel1.Caption:='Digite o Nome do Aluno no Campo "Nome".';
exit;
end;
if not frmPrincipal.TableCadAlunos.Locate('Nome_Aluno',EdNomeAluno.Text,[LOPARTIALKEY,LOCASEINSENSITIVE])then
begin
Panel1.Caption:='Registro não Encontrado, Cadastre o Aluno';
EdNomeAluno.SetFocus;
exit;
end;
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_sn').AsString;
Panel1.Caption:='Registro Encontrado.';
exit;
end;
end;
if(RadioLocTurma.Checked=true)then
begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('Select * from TableCadAlunos where bimestre=:x1 and serie=:x2 and ano_letivo=:x3');
Query1.ParamByName('x1').AsString:=EdBimestre.Text;
Query1.ParamByName('x2').AsString:=EdSerie.Text;
Query1.ParamByName('x3').AsString:=EdAnoLetivo.Text;
Query1.Open; //Dá erro nesta linha com a msg acima
DBGrid1.Refresh;
end;
end;
Tive que migrar do Zeos para os componentes IB e estou levando uma surra daquelas.
Pelos grids dá para ver que as tabelas estão "ON" com o Delphi7.
Meu problema a está nos comandos SQL. como abaixo:
Há 2 problemas com essa IBQuery.
Primeiro.
Se colocar Query1.Open no fibnal do código dá uma msg de erro. abaixo:
Se deixo essa linha, dá problema e uma msg aparece como abaixo:
ProjectPrincipal.exec raised exception class EIBInterbaseError whith message Dynamic SQL Error. SQL Error Code=-204
Table unknow TABLEPROVAT at line1, column 27.
Se tiro essa linha, compila, mas nao está correto.
O que poder ser?
Segundo problema>
Tenho 2 RadioButtons para escolher qual método de busca utilizar. por nome, ou filtrar pelos valores de campos.
O Grid não atualiza e mostra todos os cadastro, não respeitando a condição dos campos em ParambyName.
Segue o código de busca, por locate e por SQL
Se puderem auxiliar onde estou errando, agradeço e muito.
procedure TfrmCadAlunos.btnLocalizarClick(Sender: TObject);
begin
frmPrincipal.TableCadAlunos.First;
if(frmPrincipal.TableCadAlunos.IsEmpty)then
begin
Panel1.Caption:='Tabela Cadastro de Alunos, vazia';
exit;
end;
if(RadioLocNome.Checked=true)then
begin
if(EdNomeAluno.Text='')then
begin
Panel1.Caption:='Digite o Nome do Aluno no Campo "Nome".';
exit;
end;
if not frmPrincipal.TableCadAlunos.Locate('Nome_Aluno',EdNomeAluno.Text,[LOPARTIALKEY,LOCASEINSENSITIVE])then
begin
Panel1.Caption:='Registro não Encontrado, Cadastre o Aluno';
EdNomeAluno.SetFocus;
exit;
end;
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_sn').AsString;
Panel1.Caption:='Registro Encontrado.';
exit;
end;
end;
if(RadioLocTurma.Checked=true)then
begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('Select * from TableCadAlunos where bimestre=:x1 and serie=:x2 and ano_letivo=:x3');
Query1.ParamByName('x1').AsString:=EdBimestre.Text;
Query1.ParamByName('x2').AsString:=EdSerie.Text;
Query1.ParamByName('x3').AsString:=EdAnoLetivo.Text;
Query1.Open; //Dá erro nesta linha com a msg acima
DBGrid1.Refresh;
end;
end;
Alexandre
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)