DBの差し替えについて

解決


ハラハラドキドキ  2003-02-25 00:07:39  No: 77205

こんにちは。
今、DBの差し替えをプログラム上で行っています。
まず、差し替え用のテーブル(旧テーブル)が入っているDBと差し替えたいテーブル(新テーブル)が入っているDBを用意し、①既存のDBから旧テーブルを削除  ②既存のDBに新テーブルをインポート  ③新テーブルの入っていたDBを削除  の順で行っています。
この時に旧テーブルではデータ型が数値型ものは既定値に「0(ゼロ)」が入っていたのに対し、新テーブルではデータ型が数値型ものは既定値が入っていないのですが、どうしてなのかわかりません。わかる方がいたら教えて欲しいのですが。お願いします。


とおりすがり  2003-02-25 00:56:17  No: 77206

新テーブルの各フィールドに規定値を設定していないからです。
「CREATE TABLE」を使ってテーブル作成しているならば、規定値は設定できるはずです。


ハラハラドキドキ  2003-02-25 01:04:45  No: 77207

用意している新テーブルの既定値には「0(ゼロ)」が入っているんですが…
テーブル自体は「CREATE TABLE」ではなく、新テーブル用にDBを用意しているんです。


とおりすがり  2003-02-25 01:57:15  No: 77208

データインポートをする時の実行形式はなんですか?また、スクリプト文であれば、やはり[INSERT]文ですか?
内容によって回答が変わります。


ハラハラドキドキ  2003-02-25 02:16:48  No: 77209

select intoです。


ハラハラドキドキ  2003-02-25 03:38:21  No: 77210

今、CREATE文を使ってみているんですが、

strSQl = "CREATE TABLE "
strSQl = strSQl & "AAA "
strSQl = strSQl & "(数値型 LONG DEFAULT 0)"

としてみたのですが、やはりうまくいきません。
ACCESSでは無理なのでしょうか?


とおりすがり  2003-02-25 18:24:36  No: 77211

CREATR文自体間違ってます。
「数値型」が不要です


1412  2003-02-25 18:54:49  No: 77212

いえ、 create 文はあってます。
ただ、 Access の create table には
default は使えなかったと思います。
# SQL Server では使えたかな?

それなので、既定値を設定したい場合は、
テーブル作成後に、 DAO.TableDef オブジェクトなどを使用して
DefaultValue プロパティなどを設定して下さい。


とおりすがり  2003-02-25 19:11:01  No: 77213

すんません m(__)m
「数値型」って入れても大丈夫なのですね…
ところで、確かにACCESSでは私も実験しましたが、CREATE文からでは「DEFAULT」が使用できませんね〜
SQL ServerやOracleでは使用できるのですが…


とおりすがり  2003-02-25 19:34:48  No: 77214

すんません m(__)m
「数値型」って入れても大丈夫なのですね…
ところで、確かにACCESSでは私も実験しましたが、CREATE文からでは「DEFAULT」が使用できませんね〜
SQL ServerやOracleでは使用できるのですが…


魔界の仮面弁士  2003-02-25 19:42:14  No: 77215

Jetでは、CREATE TABLE時に規定値を設定する事ができません。
ただし、作成後にALTER TABLEを使うことで、規定値を与える事ができます。

=============
CREATE TABLE StaffMaster
 (StaffName TEXT(30) NOT NULL
 CONSTRAINT PKey PRIMARY KEY)
=============
ALTER TABLE StaffMaster
  ALTER COLUMN StaffName TEXT(30) DEFAULT Unknown
=============

なお、これらのJET SQL構文を使うためには、
Microsoft OLE DB Provider for Jet 4.0 から利用できる
『ANSI-92 SQL 構文モード』を利用する必要があります。

なお、DAOの場合は、ANSI-89モードしかサポートしていないため、
 SQL文での修正を行うことはできません。

# 要するに、ADOならSQLで修正できるけれど、DAOではNGという事です。
# DAOの場合は、1412 さんが書かれたように、
# "DefaultValue"ダイナミックプロパティを利用してください。


ハラハラドキドキ  2003-02-25 21:58:21  No: 77216

多くの御助言ありがとうございました。
やはり、ACCESSのCREATE文ではDEFAULTは聞けないのですね。
今回はDAO形式なので、DefaultValueを使ってみます。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加