AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

XML: AUTOINCVALUE verändern

Offene Frage von "Frederik"
Ein Thema von Frederik · begonnen am 18. Jan 2011
Antwort Antwort
Frederik

Registriert seit: 4. Apr 2008
9 Beiträge
 
#1

XML: AUTOINCVALUE verändern

  Alt 18. Jan 2011, 10:12
Ich habe eine XML-Datei, in welcher ein Feld "ID" mit Autowert vorhanden ist. Nun wurde festgestellt, dass dieser Wert nur einen Wertebereich zwischen 1 und 32767 haben darf. Ein Entfernen des Auto-Wertes ist leider nicht möglich, da die Software dann nicht mehr abwärtskompatibel wäre. Ich brauche eine Lösung, um diesen Wert, falls dieser zu hoch wird, zu ändern.

Folgendes habe ich schon probiert, funktioniert aber nicht, bzw. wird einfach ignoriert:
Delphi-Quellcode:
unit DataSet;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, db, DBClient, ExtCtrls, DBCtrls, Grids, DBGrids, StdCtrls;

//Hab versucht, den Feld-Typ hiermit zu verändern - ging aber nicht, bzw. wurde ignoriert
//Wurde Small-Int, also 32768 erreicht, ging es mit 32769 weiter
Type
  TAutoIncField = class(TSmallintField)
  public
    constructor Create(AOwner: TComponent); override;
  end;

type
  TForm1 = class(TForm)
    ClientDataSet1: TClientDataSet;
    ClientDataSet1ID: TAutoIncField;
    ClientDataSet1Name: TStringField;
    //Diese Komponenten wurden nur zu Test-Zwecken und zur schnellen Eingabe auf der Form platziert
    DBGrid1: TDBGrid;
    DBNavigator1: TDBNavigator;
    DataSource1: TDataSource;
    Panel1: TPanel;
    Button1: TButton;

    procedure FormShow(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);

  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{ TAutoIncField }

constructor TAutoIncField.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  SetDataType(ftAutoInc);
end;


procedure TForm1.FormShow(Sender: TObject);
begin
     if FileExists('Test.xml') then ClientDataSet1.LoadFromFile('Test.xml');
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
     ClientDataSet1.SaveToFile('Test.xml');
end;
end.
In einem anderen Forum hab ich was über Alter Table gelesen, um damit den Autowert zu manipulieren:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
ClientDataset1.filename := '';
ClientDataSet1.CommandText := 'Alter Table Test AUTO_INCREMENT = 1';
ClientDAtaSEt1.Open;
end;
Das ging aber leider auch nicht und es gab auch keine Fehlermeldung beim Ausführen dieser Aktion.

Hat jemand 'ne Idee? Eine Möglichkeit wäre noch, die XML-Datei zu parsen und den Wert direkt zu ändern. Aber ich glaube, man macht das nicht so...

Vielen Dank schonmal im Voraus!
  Mit Zitat antworten Zitat
Antwort Antwort


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 04:34 Uhr.
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