AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Array aus DB mit Zahlen füllen
Thema durchsuchen
Ansicht
Themen-Optionen

Array aus DB mit Zahlen füllen

Ein Thema von messie · begonnen am 4. Feb 2014 · letzter Beitrag vom 29. Mär 2014
 
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#10

AW: Array aus DB mit Zahlen füllen

  Alt 12. Mär 2014, 18:40
Moin und Danke erstmal für die Tipps. Hat ja ein wenig gedauert bis ich da wieder Zeit für habe.
Der Grund: der Import alter Daten dauert jetzt schon ein paar Wochen. Auch hier habe ich für jedes Fertigungslos, die Komponente und die Subkomponente sowie die Messdaten je einen Zugriff der sehr langsam ist. Hier kann ich auch nicht sicher sagen, ob ein Teil der Datensätze schon in der DB vorhanden ist und ich ein paar weitere Messdaten hinzu fügen muss (Die Messdaten sind oft in verschiedenen Dateien abgelegt).

Kann man das Beschreiben der Datenbank irgendwie beschleunigen?

Struktur ist:
Delphi-Quellcode:
 
      s := 'SELECT count(*) FROM ' + Fertigungslos + ' WHERE (Auftragsnummer = ' + QuotedStr(IntToStr(JobID)) + ' .... )';
      i := DM.IBCQuery1.FieldByName('COUNT').AsInteger;
      
      if i > 0 then
      begin
        //modify entry in table
        s := 'SELECT ID FROM ' + Fertigungslos + ' WHERE (Auftragsnummer = ' + QuotedStr(IntToStr(JobID)) + '.... )';
        if not DM.IBCQuery1.IsEmpty then
        begin
          idx := DM.IBCQuery1.fieldbyname('ID').AsInteger;
        end;
        s := 'UPDATE ' + Fertigungslos +, DRAWING_NO = .... 'WHERE ID = ' + IntToStr(idx);
        DM.IBCQuery1.SQL.Add(s);
        DM.IBCQuery1.ExecSQL;
        DM.IBCTransaction1.Commit;

      end
      else
      begin
        //add entry to table
        s := 'INSERT INTO ' + Fertigungslos + QuotedStr(Batch.DrawNo) + ....')';
        DM.IBCQuery1.SQL.Add(s);
        DM.IBCQuery1.ExecSQL;
        DM.IBCTransaction1.Commit;
      end;
      DM.IBCTransaction1.StartTransaction;
      DM.IBCQuery1.SQL.Clear;
      //Kontrolle
      s := 'SELECT ID FROM ' + Fertigungslos + ' WHERE (Auftragsnummer = ' + QuotedStr(IntToStr(JobID) .... ' )';
      DM.IBCQuery1.SQL.Add(s);
      DM.IBCQuery1.Open;
      if not DM.IBCQuery1.IsEmpty then
      begin
        idx := DM.IBCQuery1.fieldbyname('ID').AsInteger;
      end
      else
      begin
        Result := False;
        DM.IBCTransaction1.Commit;
        Exit;
      end;
      Batch.DBindex := idx;
      DM.IBCTransaction1.Commit;
      if SavePumps then
      begin
        for i := 0 to Fertigungslos.PumpCount -1 do
        begin
          //pumpen speichern
          SavePumpToDB(Fertigungslos.Items[i],idx); ------> hier gehen die Strukturen iterativ weiter.
        end;
      end;
      Result := True;
Das blöde ist, ich brauche es nur ein Mal.

Grüße, Messie

Geändert von messie (12. Mär 2014 um 19:59 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz