Fórum Indice paradox #155393

16/04/2003

0

if Dm.TbPoMKU.FindKey([MesAno]) then
(...)

Qdo o programa executa esta linha acima ele mostra a seguinte mensagem:

TbPoMKU No index currently active.

Mas esta tabela não tem índices.
Pq ele dá essa mensagem? O que devo fazer?

Obrigada


Debora

Debora

Responder

Posts

16/04/2003

Midas

if Dm.TbPoMKU.FindKey([MesAno]) then (...) Qdo o programa executa esta linha acima ele mostra a seguinte mensagem: TbPoMKU No index currently active. Mas esta tabela não tem índices. Pq ele dá essa mensagem? O que devo fazer? Obrigada


o metodo findkey procura uma chave exata ... por tanto na sua tabela tem que haver um indice por mesano ... como esta querendo fazer uma pesquisa em um indice que nao existe, eis a resposta do delphi .... assim aconselho que crie um indice secundario ... para que de certo o metodo ...
se ajudei sorria ... :P


Responder

Gostei + 0

16/04/2003

Debora

Ajudou sim :D

mas,... tenho uma dúvida (estou fazendo manutenção neste sistema)

Esta tabela não tem nenhum índice. Consultei os bancos anteriores, e nenhum deles tem índice secundário, a única coisa que a tabela tem é um tal de Dependent Tables com o nome de <Nome>. (Nuca vi isso.)

MesAno é uma variável do programa.

Aqui vai o código:
--------------- :cry: Por favor, não sei mais o que fazer :cry: ------------

Var
[color=red:58d554b900] MesFecIni,AnoFecIni,MesAno :String;[/color:58d554b900]
mValMarKup : Real;
QrMarKup : TQuery;
VarTemp :Real;
begin
mValOs := 0.00;
mValMarKup:= 0.00;
QrMarKup := TQuery.Create(Application);
MesFecIni := copy(MaskEdit1.text,1,2);
AnoFecIni := copy(MaskEdit1.text,4,4);
MesAno := copy(MaskEdit1.Text,4,4)+copy(MaskEdit1.Text,1,2);
BitBtn1.Enabled := False;
Panel2.Caption := ´Verificando campos, aguarde...´;
Panel2.Visible := true;
Application.ProcessMessages;
if FechaMes then
begin
ShowMessage(´Processo de Checagem Ok.´);
if Importacao then
begin
Panel2.Visible := false;
Gauge1.Visible := false;
Application.ProcessMessages;
Panel2.Caption := ´Processando MARK_UP,Aguarde ...´;
Panel2.Visible := true;
Application.ProcessMessages;
QrMarKup.SQL.Clear;
QrMarKup.SQL.Add(´Select Sum(FeValFat) as Valfat from ::power::pofec Where FePerio = :FePerio´);
QrMarKup.ParamByName(´FePerio´).AsInteger := StrToInt(AnoFecIni+MesFecIni);
QrMarKup.Open;
[color=red:58d554b900] if Dm.TbPoMKU.FindKey([MesAno]) then[/color:58d554b900]
Dm.TbPoMKU.Delete;
Dm.TbPoMKU.Insert;
Dm.TbPoMKU.FieldByName(´MKPERIO´).asString := MesAno;
Dm.TbPoMKU.FieldByName(´MKVALFAT´).asFloat := QrMarKup.FieldByName(´ValFat´).asFloat;
Dm.TbPoMKU.Post;
QrMarKup.SQL.Clear;
QrMarKup.SQL.Add(´Select * from ::power::pocic Where ciperio = :ciperio ´);
QrMarKup.ParamByName(´ciperio´).AsString := MesAno;
QrMarKup.Open;
QrMarKup.First;
While not QrMarKup.eof do
Begin
// if (QrMarKup.fieldbyname(´CICENTRO´).AsString = ´54´) or (QrMarKup.fieldbyname(´CICENTRO´).AsString = ´52´) then
VarTemp := StrToInt(QrMarKup.FieldByName(´CICENTRO´).AsString);
if (VarTemp > 49) then
Begin
QrMarKup.Next;
Continue;
End;
mValMarKup := mValMarKup+QrMarKup.fieldbyname(´CIVALOR´).asFloat;
QrMarKup.Next;
End;
Dm.TbPoMKU.FindKey([MesAno]);
Dm.TbPoMKU.Edit;
Dm.TbPoMKU.FieldByName(´MKVALDES´).asFloat := mValMarKup;
Dm.TbPoMKU.Post;
Dm.TbPoMKU.Edit;
Try
Dm.TbPoMKU.FieldByName(´MKMARKUP´).asFloat := ((Dm.TbPoMKU.FieldByName(´MKVALDES´).asFloat/Dm.TbPoMKU.FieldByName(´MKVALFAT´).asFloat)*100);
except
Dm.TbPoMKU.FieldByName(´MKMARKUP´).asFloat := 0 ;
End;
Dm.TbPoMKU.Post;
Panel2.Visible := false;
Application.ProcessMessages;
ShowMessage(´Processo de Importação Ok.´);
end
else
begin
Panel2.Visible := false;
Gauge1.Visible := false;
Application.ProcessMessages;
ShowMessage(´Atenção - erro no processo de importação.´);
ShowMessage(´Comunique o responsável imediatamente.´);
BitBtn1.Enabled := true;
Exit;
end;
end
else
begin
Panel2.Visible := false;
Gauge1.Visible := false;
Application.ProcessMessages;
BitBtn1.Enabled := true;
Exit;
end;
BitBtn1.Enabled := True;
FreeAndNil(QrMarKup);
FrmFecMe.Close;
end;


Responder

Gostei + 0

17/04/2003

Silvino Cavassana

Pelo que entendi, você tem uma tabela Paradox chamada TBPOMKU e nesta tabela existe um campo chamado MKPERIO do tipo String onde você armazena o conteúdo da variável MesAno.
Se o que você quer é localizar nesta tabela o registro que contenha no campo MKPERIO o valor que está na variável MesAno, faça o seguinte:
após as duas barras // são só comentários


// no lugar de if Dm.TbPoMKU.FindKey([MesAno]) then
// Dm.TbPoMKU.Delete; INCLUA AS SEGUINTES LINHAS:

Dm.TbPoMKU.First; //posiciono no primeiro registro da tabela
While not Dm.TbPoMKU.Eof and Dm.TbPoMKU.FieldByName
(´MKPERIO´).Value <> MesAno;
begin
Dm.TbPoMKU.Next; // percorro a tabela até encontrar MesAno no
end; // campo MKPERIO ou até atingir o fim do arquivo
if not Dm.TbPoMKU.Eof then Dm.TbPoMKU.Delete; // se não for fim do
// arquivo, é porque encontrei o registro,
// eliminando-o então

//continua sua rotina
Dm.TbPoMKU.Insert;.....


Responder

Gostei + 0

17/04/2003

Silvino Cavassana

CORREÇÃO NO WHILE

Pelo que entendi, você tem uma tabela Paradox chamada TBPOMKU e nesta tabela existe um campo chamado MKPERIO do tipo String onde você armazena o conteúdo da variável MesAno.
Se o que você quer é localizar nesta tabela o registro que contenha no campo MKPERIO o valor que está na variável MesAno, faça o seguinte:
após as duas barras // são só comentários


// no lugar de if Dm.TbPoMKU.FindKey([MesAno]) then
// Dm.TbPoMKU.Delete; INCLUA AS SEGUINTES LINHAS:

Dm.TbPoMKU.First; //posiciono no primeiro registro da tabela
While not Dm.TbPoMKU.Eof and Dm.TbPoMKU.FieldByName
(´MKPERIO´).Value <> MesAno do // na outra mensagem sobrou o ; e
begin // faltou o do
Dm.TbPoMKU.Next; // percorro a tabela até encontrar MesAno no
end; // campo MKPERIO ou até atingir o fim do arquivo
if not Dm.TbPoMKU.Eof then Dm.TbPoMKU.Delete; // se não for fim do
// arquivo, é porque encontrei o registro,
// eliminando-o então

//continua sua rotina
Dm.TbPoMKU.Insert;.....



Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar