Einzelnen Beitrag anzeigen

Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Datenbank gleich halten bei sich und Endanwendern

  Alt 20. Mär 2005, 16:19
OK, hab dann mal los. Die Lösung ist sicherlich nicht allzu bequem, aber sie klappt.

Als erstes brauchst du in deiner Datenbank folgende Tabelle.

SQL-Code:
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[VersionInfo]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[VersionInfo]
GO

CREATE TABLE [dbo].[VersionInfo] (
   [ID] [int] IDENTITY (1, 1) NOT NULL ,
   [Datum] [datetime] NOT NULL ,
   [Major] [int] NOT NULL ,
   [Minor] [int] NOT NULL ,
   [Release] [int] NOT NULL ,
   [Build] [int] NOT NULL ,
   [Script] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
   [Runned] [bit] NOT NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
Im ZIP File sind dann die nötigen Dateien. Zu installieren sind darunter die Komponten FileInfo und GxDBScript.

Im File dmDBVersion gibts dann die Methode CheckDBVersion. Zuvor die Zugriffsdaten von TDatabase setzen.

Bei Aufruf von CheckDBVersion wird im Unterverzeichnis Scripts (aus Sicht der EXE-Datei) nach Update-Skripten gesucht. Die Namensgebung der Skripte muss die Form:
v.xx.yy.zz.bb.txt
haben
xx: Major Version
yy: Minor Version
zz: Release
bb: Build
Die Skriptversion wird mit der aktuellen Version der EXE Datei verglichen. Diese Versioninfo muss also in den Projektoptionen definiert sein. Ist die Version des Skriptes älter oder gleich als die Version der EXE Datei, und wurde das Skript noch nicht ausgeführt, so geschieht dies und wird als ausgeführt in der Tabelle VersionInfo in der DB gekennzeichnet.

Ich weiss, die Anwendung ist nicht gerade elegant gelöst, aber ich kam noch nicht dazu, das Ganze in eine gescheite, eigene Komponente zu packen. Aber es funktioniert. Du musst nur noch dafür sorgen, daß du sämtliche Änderungen, die du in der Datenbank vornimmst, auch gleich in die Skriptdatei übernimmst.
Angehängte Dateien
Dateityp: zip dbupdate_125.zip (14,1 KB, 45x aufgerufen)
  Mit Zitat antworten Zitat