Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Fehler bei Index (https://www.delphipraxis.net/106076-fehler-bei-index.html)

SaFu 4. Jan 2008 22:23

Datenbank: Paradoxx • Version: ? • Zugriff über: Datasource

Fehler bei Index
 
Hi kann mir jemand sagen wo hier der Fehler liegt bekomme einen index fehler wenn ich im Editfeld versuche einen Buchstaben einzu geben

Delphi-Quellcode:
procedure TForm1.Tabelleerst;
begin
 Table1.close;
  getdir(0,Pfad);
   With Table1 Do //Tabelle erzeugen
     begin
      DatabaseName:= (ExtractFilePath(ParamStr(0)) + 'Adress\'); //Pfad zur Tabelle
      Form2.Table1.DatabaseName:= (ExtractFilePath(ParamStr(0)) + 'Adress\');
      TableName:= 'Adress.DB';
      Form2.Table1.TableName:= 'Adress.DB';
      TableType:= ttParadox;
     end;
      if not FileExists(ExtractFilePath(ParamStr(0)) + 'Adress\Adress.DB') then
        begin
          With Table1 Do
            begin
              with FieldDefs Do //Datenfelder erzeugen
                begin
                 Clear;
                 Add('Nr.',ftAutoInc,0,True);
                 Add('SName',ftString,30,True);
                 Add('SStraße',ftString,30,False);
                 Add('SOrt',ftString,30,False);          
                end;
                  with IndexDefs do //Index Schlüssel erzeugen
                   begin
                    Clear;
                    Add('Nr','Nr.',[ixPrimary, ixUnique]); // Primär Index
                   end;
                    CreateTable;
                end;
        end;
     Table1.Active:= True; //Tabelle1 auf Form1 aktivieren
    Form2.Table1.Active:= True; //Tabelle1 auf Form2 aktivieren
end;

procedure TForm1.Edit1Change(Sender: TObject);
begin
  With Table1 do
   begin
    IndexName:= 'Nr.';
    SetKey;
    FieldByName('SName').AsString:= Edit1.Text;
    GotoNearest;
   end;
end;

Bernhard Geyer 4. Jan 2008 22:54

Re: Fehler bei Index
 
Lass mal im Indexnamen den Punkt weg. Könnte die BDE verwirren da der Punkt auch für andere Dinge reverviert ist.

SaFu 4. Jan 2008 22:56

Re: Fehler bei Index
 
dann bekomme ich auch einen fehler " feld SName ist nicht indiziert und kann nicht verändert werden

SaFu 4. Jan 2008 23:34

Re: Fehler bei Index
 
ok habe es falls es jemand interessiert

Delphi-Quellcode:
procedure TForm1.Tabelleerst;
begin
Table1.close;
  getdir(0,Pfad);
   With Table1 Do //Tabelle erzeugen
     begin
      DatabaseName:= (ExtractFilePath(ParamStr(0)) + 'Adress\'); //Pfad zur Tabelle
      Form2.Table1.DatabaseName:= (ExtractFilePath(ParamStr(0)) + 'Adress\');
      TableName:= 'Adress.DB';
      Form2.Table1.TableName:= 'Adress.DB';
      TableType:= ttParadox;
     end;
      if not FileExists(ExtractFilePath(ParamStr(0)) + 'Adress\Adress.DB') then
        begin
          With Table1 Do
            begin
              with FieldDefs Do //Datenfelder erzeugen
                begin
                 Clear;
                 Add('Nr',ftAutoInc,0,True);
                 Add('SName',ftString,30,True);
                 Add('SStraße',ftString,30,False);
                 Add('SOrt',ftString,30,False);
                end;
                  with IndexDefs do //Index Schlüssel erzeugen
                   begin
                    Clear;
                    Add('Nr','Nr',[ixPrimary, ixUnique]); // Primär Index
                    Add('SName','SName',[]);
                   end;
                    CreateTable;
                end;
        end;
     Table1.Active:= True; //Tabelle1 auf Form1 aktivieren
    Form2.Table1.Active:= True; //Tabelle1 auf Form2 aktivieren
end;

procedure TForm1.Edit1Change(Sender: TObject);
begin
  With Table1 do
   begin
    IndexName:= 'SName';
    SetKey;
    FieldByName('SName').AsString:= Edit1.Text;
    GotoNearest;
   end;
end;

hoika 5. Jan 2008 08:21

Re: Fehler bei Index
 
Hallo,

einfacher ist es,
das ganze über eine Query zu machen.

z.B.

SQL-Code:
Create Index idx_Address_sName on Address(sName)

Heiko

SaFu 5. Jan 2008 08:23

Re: Fehler bei Index
 
mit der Query kenn ich mich net so aus wie und was mus da eingestelt werden.

Brauch ich dann auch ein DBEdit oder funzt das auch mit einem Edit?
Kann ich dan im selben Edit auch noch nach anderen Feldern suchen??

fragen über Fragen

hoika 5. Jan 2008 10:00

Re: Fehler bei Index
 
Hallo

Delphi-Quellcode:
var
  sFoundName: String

with Query do
begin
  SQL.Clear;
  SQL.Add('Select * From Table');
  SQL.Add('Where SName=:SName');
  ParamByName('SName').AsString:= Edit_Search.Text; /// normaler TEdit
  Open;
  try
    if QueryIsNotEmpty then
    begin
      sFoundName:= FieldByName('SName').AsString;

     // bei mehreren Suchergebnissen folgendes
      while not EOF do
      begin
        sFoundName:= FieldByName('SName').AsString;
       // mache was mit sFoundName

        Next;
      end;

    end;
  finally
    Close;
  end;
end;
Am besten mal im DB Tutorial nachsehen


Heiko

SaFu 5. Jan 2008 11:12

Re: Fehler bei Index
 
Kann es sein das das hier nicht stimmt
Delphi-Quellcode:
if QueryIsNotEmpty then

hoika 5. Jan 2008 12:44

Re: Fehler bei Index
 
Hallo,

eigentlich nicht.
Falls er das nicht findet

Delphi-Quellcode:
if not IsEmpty then
Sinn ist auf jeden Fall, nachdem Open festzustellen,
ob überhaupt was gefunden wurde.

Du kannst das auch mit

Delphi-Quellcode:
if not Query.EOF
machen.

Das IsEmpty hat Borland irgendwann mal eingeführt (Delphi 5?)


Heiko

SaFu 5. Jan 2008 13:06

Re: Fehler bei Index
 
Also bei mir tut sich garnichts was mach ich falsch

Delphi-Quellcode:
procedure TForm1.Edit2Change(Sender: TObject);
var sFoundName: String;
begin
with Query1 do
begin
  SQL.Clear;
  SQL.Add('Select * From Artikel.db');
  SQL.Add('Where Artikel=:Artikel');
  ParamByName('Artikel').AsString:= Edit2.Text; /// normaler TEdit
  Open;
  try
   if not Query1.EOF then
    begin
      sFoundName:= FieldByName('Artikel').AsString;
      showmessage(sFoundName);

     // bei mehreren Suchergebnissen folgendes
      while not EOF do
      begin
        sFoundName:= FieldByName('Artikel').AsString;
       // mache was mit sFoundName

        Next;
      end;
    end;
  finally
    Close;
  end;
 end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:45 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz