Einzelnen Beitrag anzeigen

Barthiboy

Registriert seit: 4. Nov 2011
36 Beiträge
 
#1

ClientDataSet MSSQL Tabelle durcheinander

  Alt 23. Aug 2012, 06:24
Datenbank: MSSQL • Version: 2012 • Zugriff über: XE2
Hallo zusammen,

ich habe ein Problem bei dem zugriff auf meine Datenbank.
Folgender Porgrammaufbau:
Serververbindung:
SQLConnection->SQLDataSet->DataSetProvider->ClientDataSet.
Datenzugriff:
DBGrid->DataSource->ClientDataSet

Ich befülle das DBGrid und möchte dann mit Fehler := ApplyUpdate(-1) die Daten auf den Server laden.
Es sind Testweise 800 Zeilen in 8 Spalten.
Die Zeilen enthalten aufsteigend Zahlen. Die Daten werden im DB aufsteigend eingetragen.
Allerdings werden sie in falscher Reihenfolge auf dem Server abgelegt.
Bsp:
1 Eintrag = 1
2 Eintrag = 2
.
.
.
55 Eintrag = 55
56 Eintrag = 56
57 Eintrag = 103

Die ersten ca. 50 Einträger werden aufsteigend geschrieben. Dann werden sie zufällig vertauscht.
Für mich ist bis jetzt noch kein Vertauschungsschema zu erkennen.
Hatte schon jemand mal so ein Problem?
Danke für die Hilfe

Hier mein Code
Code:
procedure TFahrplan.Btn_beschriftenClick(Sender: TObject);
var FP, pos, u: Word;
Fahrplan_PM, Fahrplan : String;
DBFehler, Absender,Ziel,Alter,Fehler,Info,SP_FK,Field : LongInt;
begin
  Field := 1;
  Absender := 1;
  Ziel := 1;
  Alter:= 1;
  Fehler:= 1;
  Info := 1;
  SP_FK := 1;
    //mssql.ClientDataSet.Edit;
    for FP := 1 to StrToInt(Edit1.Text) do begin
      Fahrplan_PM := '';
      case FP of
        1..9    : Fahrplan := 'FP0' + IntToStr(FP);
        10..100 : Fahrplan := 'FP' + IntToStr(FP);
      end;
      for u := 1 to 2 do begin
        for pos := 1 to 50 do begin
          case pos of
            1..9  : Fahrplan_PM := Fahrplan + '_U' + IntToStr(u) + '_Pos0' + IntToStr(pos);
            10..50: Fahrplan_PM := Fahrplan + '_U' + IntToStr(u) + '_Pos' + IntToStr(pos);
          end;
          mssql.ClientDataSet.AppendRecord ([ Fahrplan_PM,Fahrplan,0,0,0,0,0,0]);
        end;
      end;
    end;
  DBFehler := mssql.ClientDataSet.ApplyUpdates(0);
end;

procedure TFahrplan.FormActivate(Sender: TObject);
begin
  if mssql.ClientDataSet.Active then
    mssql.ClientDataSet.Close;
  mssql.SQLDataSet.CommandText := 'select * from Fahrplan';

  mssql.ClientDataSet.Open;
  mssql.ClientDataSet.Active := true;
  DS_FahrPos.Enabled := true;
  mssql.FMetaDataProvider := TDBXDataExpressMetaDataProvider.Create;
end;
  Mit Zitat antworten Zitat