Re: DEFAULT Wert nachträglich über SQL ändern

Tech-Archive recommends: Repair Windows Errors & Optimize Windows Performance

From: Henry Habermacher [MVP Access] (DontSpamHenry_at_psp-online.com)
Date: 10/15/04


Date: Fri, 15 Oct 2004 17:22:01 +0700

Hallo Claus

Claus Anderwald <ClausAnderwald@discussions.microsoft.com> wrote:

> Die Default Eigenschaft über VB und DAO zu ändern funktioniert, nur
> soll in Zukunft alles über SQL Script laufen (u.a. weil verschiedene
> Datenbanksysteme genutzt werden sollen, nur hält sich Access leider
> nicht an einige Standards). Ich poste trotzdem mal ein kleines

An welche Standards sollte sich Access denn halten? Es ist nicht Access,
sondern Jet4, was Du da ansprichst. Access ist nur eine Hülse um Jet4
und andere Datenbank Manager. Wenn etwas vom SQL Server nicht
unterstützt wird, spricht man auch nicht davon, dass Access sich nicht
an einen Standard hält, auch wenn Access genausogut als Hülse für den
SQL Server verwendet werden kann. Ich glaube du hast da ein kleines
Durcheinander.

> Beispiel, vielleicht mache ich ja an einer Stelle einen Fehler:
>
> Dim cn As ADODB.Connection
> Dim sql_command As String
> Dim connectionstring As String
>
> connectionstring = "Provider=Microsoft.Jet.OLEDB.4.0;Data
> Source=C:\Temp\db_test.mdb;Mode=ReadWrite|Share Deny None;Persist
> Security Info=False"
> sql_command = "ALTER TABLE [tbl1] ALTER COLUMN [Wert1] SET DEFAULT
> (10);"
>
> Set cn = New Connection
> cn.Open connectionstring
>
> cn.Execute (sql_command)
> For i = 0 To cn.Errors.Count - 1
> MsgBox cn.Errors(i).Description
> Next i
>
>
> Also wie gesagt, es gibt keinen Fehler, nur wird die Änderung leider
> nicht durchgeführt.

Wo ist denn Dein ErrorHandler? Ich sehe nichts. Wie schliesst Du darauf,
dass es keinen Fehler gibt?

> Gibt es vielleicht die Möglichkeit, auch in Access mit CONSTRAINTS bei
> Defaults zu arbeiten wie bei SQL Server 2000? Also wenn man beim
> Anlegen der Spalte
> [Wert1] INTEGER CONSTRAINT [DF_test] DEFAULT (0)
> verwendet gibt es in Access leider einen Fehler wegen der CONSTRAINT
> Anweisung.

Die SQL Syntax von Jet hat - wie bereits gesagt - nichts mit Access zu
tun. Suche mal in der OH von Jet nach Default. Ich glaube, das gibt's
nicht. Die Syntax hat auch nichts mit "vielleicht" zu tun, die ist genau
definiert.

Hier die Syntax von Constraints aus der Jet4 OH (von A2003, (c)
Microsoft):
Single-field constraint:

CONSTRAINT name {PRIMARY KEY | UNIQUE | NOT NULL |
    REFERENCES foreigntable [(foreignfield1, foreignfield2)]
    [ON UPDATE CASCADE | SET NULL]
    [ON DELETE CASCADE | SET NULL]}

Multiple-field constraint:

CONSTRAINT name
    {PRIMARY KEY (primary1[, primary2 [, ...]]) |
    UNIQUE (unique1[, unique2 [, ...]]) |
    NOT NULL (notnull1[, notnull2 [, ...]]) |
    FOREIGN KEY [NO INDEX] (ref1[, ref2 [, ...]]) REFERENCES
foreigntable [(foreignfield1 [, foreignfield2 [, ...]])]
    [ON UPDATE CASCADE | SET NULL]
    [ON DELETE CASCADE | SET NULL]}

Da steht halt nichts von Default. Hingegen findest Du das DefaultValue
Property in der DAP OH. Das werdet ihr daher wohl kaum über DDL machen
können. Wenn's künftig nur noch über DDL Statements laufen soll, müsst
ihr halt auf die Default Values verzichten (was IMHO sowieso richtig
ist, weil man die Anwendung und die Daten nicht mischen sollte und der
Defaultvalue was ist, was in der Anwendung genausogut beim Einfügen
eines neuen Datensatzes gesetzt werden kann)

Gruss
Henry

-- 
Keine E-Mails auf Postings in NGs senden!
Don't send e-mails to postings in newsgroups!
KB:  http://support.microsoft.com/default.aspx
FAQ: http://www.donkarl.com/AccessFAQ.htm
OH:  Online Hilfe von Microsoft Access (Taste F1)
Downloads: http://www.dbdev.org


Relevant Pages

  • Re: SQL 2005 - Eingabemasken?
    ... Denk man kann die dann auch an den MS SQL hängen. ... Wobei Du auch auf Access Datenbanken mit .NET ... Benutzerzahlen eher Probleme als ein SQL Server. ...
    (microsoft.public.de.sqlserver)
  • Re: SQL Express vs. Jet
    ... > Wieso mit Access? ... Der SQL Server greift auf eine simple *.mdf zu:-) ... Dim dadp1 As New OleDb.OleDbDataAdapter ...
    (microsoft.public.de.german.entwickler.dotnet.datenbank)
  • Re: OleDb Exception
    ... Das ist der SQL String aus Access. ... > ich diesen direkt kopiere ohne Änderung erhalte ich die Exception. ... OleDbParameter comissionParameter = ...
    (microsoft.public.de.german.entwickler.dotnet.datenbank)
  • Re: A10 Multiwertfeld im Backend - funktioniert im Frontend nicht
    ... Mach's per DML. ... Du bist doch eigentlich nicht so neu in SQL. ... Und irgendwie standardisiert ist das überhaupt nicht, weil es eben keinen Sinn macht. ... Das hat doch mit dem Nonsens, den die Access Programm Manager hier fabriziert haben, überhaupt nichts zu tun. ...
    (microsoft.public.de.access)
  • Re: SQL 2005 - Eingabemasken?
    ... Und wenn der Anbieter keine SQL Server Version ... > Wobei Du auch auf Access Datenbanken mit .NET ...
    (microsoft.public.de.sqlserver)