AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken DefaultExpression aus Access DB wird nicht ausgelesen
Thema durchsuchen
Ansicht
Themen-Optionen

DefaultExpression aus Access DB wird nicht ausgelesen

Ein Thema von Sommerkind · begonnen am 5. Sep 2018 · letzter Beitrag vom 26. Sep 2018
Antwort Antwort
Sommerkind

Registriert seit: 5. Sep 2018
2 Beiträge
 
#1

DefaultExpression aus Access DB wird nicht ausgelesen

  Alt 5. Sep 2018, 10:37
Datenbank: MS Access • Version: 2010 • Zugriff über: Delphi XE7
Hallo Leute,

vielleicht könte mir jemand mit dem folgenden Problem helfen.
Ich habe zwei MS Access DatenBanken (Access 2000-Dateiformat), eine alte und eine neue. Ich möchte aus der neue die fehlende Felder auslesen und in die alte DB einfügen. Dafür mache ich eine Schleife durch die Felder, prüfe, welche es nicht gibt, lese ihre Namen, Datentyp UND DEFAULTWERT aus usw.
Das alles funktioniert prima, nur das die DefaultExpression komischerweise immer leer bleibt... als ob da nichts steht, aber da stehen die Werte.
Hier ein Stück Code:

SQLdatentype := FieldTypeToSQLType(Data.DB.FieldTypeNames[RefQuery.Fields[x].DataType]);
if SQLdatentype <> '' then
begin
SQLText := 'ALTER TABLE alteTabelle ADD '+ RefQuery.Fields[x].FieldName + ' ' + SQLdatentype;
if SQLdatentype = 'VARCHAR' then
SQLText := SQLText + '(' + RefQuery.Fields[x].Size.ToString + ')';
if RefQuery.Fields[x].DefaultExpression <> '' then // immer leer
SQLText := SQLText + ' DEFAULT ' + RefQuery.Fields[x].DefaultExpression;

Der Weg mit DBQuery.Fields.Add(NewField) habe ich auch schon versucht, er spuckt keine Fehler, aber die DB bekommt keine neue Felder.
  Mit Zitat antworten Zitat
Sommerkind

Registriert seit: 5. Sep 2018
2 Beiträge
 
#2

AW: DefaultExpression aus Access DB wird nicht ausgelesen

  Alt 26. Sep 2018, 09:28
Falls jemand das gleiche Problem hat, hier ist meine Lösung:

Delphi-Quellcode:
var
DS: TADODataSet;
Field1, Field2: TField;


DS := TADODataSet.Create(nil);
DS.Connection := MeineConnection;
MeineConnection.OpenSchema(siColumns, VarArrayOf([NULL, NULL, MeineTabelle]), EmptyParam, DS);
Field1 := DS.FindField('COLUMN_NAME');
Field2 := DS.FindField('COLUMN_DEFAULT');
SQLText := 'ALTER TABLE ' + MeineTabelle + ' ALTER COLUMN ' + Field1.AsString + ' SET DEFAULT ' + Field2.AsString;
MeineQuery.SQL.Text := SQLText;
MeineQuery.ExecSQL();
Viele Grüße

Geändert von mkinzler (26. Sep 2018 um 09:32 Uhr) Grund: Delphi-Tag eingefügt
  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 21:49 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