PAGUE 6 MESES
LEVE 12 MESES
GARANTIR DESCONTO

Fórum Problema... migrando sistema do BDE para ADO #187226

08/10/2003

0

Estou migrando um sistema e estou com algumas dificuldades..

Esta dando a seguinte mensagem:

[b:7105048d2c]Current Provider does not support the necessary interface for index functionality[/b:7105048d2c]

O procedimento do botão pesquisar antigo:

[color=darkred:7105048d2c]var
Resultado: string;
SalvaIndice: string;
begin
PageControl.ActivePage := Page1;
SalvaIndice := MyTable.IndexName;
MyTable.IndexName := IndiceCampoChave(MyTable);
Resultado := Pesquisa(MyTable.TableName, MyTable.FieldDefs.Items[0].Name, MyTable.FieldDefs.Items[1].Name);
if Resultado <> MyTable.Fields[0].AsString then
begin
Screen.Cursor := crHourGlass;
MyTable.FindKey([Resultado]);
Screen.Cursor := crDefault;
end;
MyTable.IndexName := SalvaIndice;[/color:7105048d2c]


eu mudei e ficou assim, não sei se está certo:


[color=blue:7105048d2c]var
Resultado: string;
SalvaIndice: string;
begin
PageControl.ActivePage := Page1;
SalvaIndice := MyTable.IndexName;
MyTable.IndexName := IndiceCampoChave(MyTable);
Resultado := Pesquisa(MyTable.TableName, [b:7105048d2c]MyTable.FieldDefList.FieldDefs[0].Name,MyTable.FieldDefList.FieldDefs[1].Name[/b:7105048d2c]);
if Resultado <> MyTable.Fields[0].AsString then
begin
Screen.Cursor := crHourGlass;
[b:7105048d2c]MyTable.Locate(Resultado,´´,[LoPartialKey, LoCaseInsensitive]);[/b:7105048d2c]
Screen.Cursor := crDefault;
MyTable.IndexName := SalvaIndice;[/color:7105048d2c]


A função IndiceCampoChave:

function IndiceCampoChave(Table: TAdoTable): string;
var
Cont: byte;
begin
// se o índice for da chave primária...
Table.IndexDefs.Update;
for Cont := 0 to Table.IndexDefs.Count -1 do
if ixPrimary in Table.IndexDefs.Items[Cont].Options then
begin
Result := Table.IndexDefs.Items[Cont].Name;
Break;
end;
end;


A função Pesquisa

function Pesquisa(Tabela, CampoChave, CampoDeBusca: string): string;
// Retorna um valor de CampoChave pesquisado através de CampoDeBusca.
// EX: Pesquisa(´Clientes´, ´Codigo´, ´Nome´)
var
TextoSQL: string;
begin
TextoSQL := ´SELECT ´ + CampoChave + ´, ´ + CampoDeBusca + ´ FROM ´ + Tabela + ´ WHERE ´ + CampoDeBusca + ´ LIKE ´;

FmPesPadrao.SQL := TextoSQL;
FmPesPadrao.ComplementoSQL := ´ORDER BY ´ + CampoDeBusca;

if FmPesPadrao.ShowModal = mrOk
then Result := FmPesPadrao.RegistroAtual
else Result := ´´;
end;

Será que eu estou errando em alguma coisa:
No formulário de Pesquisa, tem o botão OK:

[color=blue:7105048d2c] if (Query1.Active) and (Query1.RecordCount <> 0)
then RegistroAtual := Query1.Fields[0].Value
else RegistroAtual := ´´;
ModalResult := mrOk;[/color:7105048d2c]


Alguém poderia me ajudar
Ficaria grato

[]´s


Erucci

Erucci

Responder

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

Aceitar