■ 現在のこのページの役立ち度:
表示されない場合こちらのリンクからもご覧になれます。
■ このページの役立ち度を評価する:
役立ち度を評価してください。
(1(左):あまり役立たない - 5(右):大変役立った):
■ ページの共有:
[ サイト内検索 ]
カスタム検索
#2235-0ありがとうございます。みやけ1999-10-12(火) 12:00
     #2238-0RE#2235:ありがとうございます。きんた1999-10-12(火) 13:46
     #2244-0すみませんでした。みやけ1999-10-12(火) 16:01
     #2245-0RE#2244:すみませんでした。123!1999-10-12(火) 16:13
     #2254-0おっと。。。みやけ1999-10-12(火) 18:14
     #2255-0RE#2254:テーブルの存在チェック(おっと。。。)ZERRY1999-10-12(火) 18:20
     #2257-0RE#2254:おっと。。。魔界の仮面弁士1999-10-12(火) 18:49
     #2272-0RE#2257:おっと。。。みやけ1999-10-13(水) 11:58
#2235-0
ありがとうございます。
きんたさん 素早いレス どうも ありがとうございましたっ!!

・・・で、実験したんですが、VBからは無理なようです。
CAT・TAB 共に テーブルが存在しません。 ってなります。
ORACLEのSQLプラスで 試したら 期待通りの結果を出してくれました。
ACCESS用の こーゆーSQLが わかると嬉しいんですが。。。

ちなみに ACCESSは クリスタルレポートのワークテーブルに使用してるんです。
こーゆー仕様って あんまり よくないのかな??
#2238-0
RE#2235:ありがとうございます。
んー、やっぱAccessからだと分からん。


> CAT・TAB 共に テーブルが存在しません。 ってなります。

んー駄目か。じゃぁ力技だけど
select count(*) from dba_tab_columns where TABLE_NAME = 'テーブル名';
これで値が0ならテーブルは無し、それ以外なら有り。
但しDBA権限のあるユーザーでないと出来んので注意。

どうやってAccessにデータを落してるのか分からんけど、もしVB内でOracleから
データを落しているなら、その時の結果を見て判断したほうが楽そう。
(そういえば、そもそもAccessにSYSTEM表みたいなモノは存在するのか??)


> ちなみに ACCESSは クリスタルレポートのワークテーブルに使用してるんです。
> こーゆー仕様って あんまり よくないのかな??

データを抽出して印刷するのが目的なら特に問題無し(・ ・)ノ
要するに、データを書き込もうとした時にイヤな事が起こりうるのだ(・ ・)


ということで、あとはAccessに詳しい人よろしく。
#2244-0
すみませんでした。
きんたさん どうも ありがとうございます。

やっぱり 駄目みたいです。。。 ・・・で 結局 ワークテーブルは、ずーっと残しっぱなし
って仕様にしました。 今まで いちいち 消してたんですよ。 ・・・で ワークテーブルが
あるかないかチェックして、あればクリア、無ければ作成 って仕様だったんですけど、
今回の問題で ワークテーブルは、ずーっと存在するから 初期化して使うってな事になりました。
いろいろ 教えてくださってありがとうございました。 CAT・TABってのは
ORACLEをチェックする時に使わせていただきます。 とても勉強になりました!!
#2245-0
RE#2244:すみませんでした。
> やっぱり 駄目みたいです。。。 ・・・で 結局 ワークテーブルは、ずーっと残しっぱなし
> って仕様にしました。 今まで いちいち 消してたんですよ。 ・・・で ワークテーブルが
> あるかないかチェックして、あればクリア、無ければ作成 って仕様だったんですけど、
> 今回の問題で ワークテーブルは、ずーっと存在するから 初期化して使うってな事になりました。

  わざわざ、ワークテーブルの存在チェックを行うということは、存在した場合にそこに登録されて
  いるデータに新しく今回のデータを追加して、レポートに出力するのかと思っていました。

  必ず初期化というのは、データを削除するということですか?
  扱うデータが何件ぐらいかわからないので的外れになるやもしれませんが、データを削除する
  のであれば、テーブルを削除後に再作成したほうが速度的には速いと思いますよ。
  印刷前にワークテーブルを削除するか、あるいは印刷後にワークテーブルを削除した方が
  よいと思います。
#2254-0
おっと。。。
レス ありがとうございますっ!!
初期化とゆーのは 全データを削除するとゆー事です。
件数によっては・・・の件ですが 1万件ぐらいあります。
やっぱり これだけの件数を削除するより、テーブルを削除して再生成した方がいいですよねぇ??
そーなると やっぱり テーブルが存在するかどーかのチェックが必要なんですけど。。。
いったい どーしたら いーんでしょう??
#2255-0
RE#2254:テーブルの存在チェック(おっと。。。)
> レス ありがとうございますっ!!
> 初期化とゆーのは 全データを削除するとゆー事です。
> 件数によっては・・・の件ですが 1万件ぐらいあります。
> やっぱり これだけの件数を削除するより、テーブルを削除して再生成した方がいいですよねぇ??
> そーなると やっぱり テーブルが存在するかどーかのチェックが必要なんですけど。。。
> いったい どーしたら いーんでしょう??
別に削除していいなら、あるかどうかのチェックをしないで、
なければ、そのまま処理を継続させればいいのでは・・OnErrorなどで・・
#2257-0
RE#2254:おっと。。。
> 初期化とゆーのは 全データを削除するとゆー事です。
神託とかなら、
    TRUNCATE TABLE テーブル名
というSQLで、高速削除が可能なんですけど、Jetでは使えませんしねぇ。(~~;)


> 件数によっては・・・の件ですが 1万件ぐらいあります。
> やっぱり これだけの件数を削除するより、テーブルを削除して再生成した方がいいですよねぇ??
1万件だと、データ削除に余計な時間がかかってしまう気がします。

エラートラップして、既にテーブルがあろうがなかろうが、
「とりあえず削除してから再作成」が簡単で良いと思いますよ。

On Error Resume Next
'テーブル削除処理
On Error GoTo 0
'テーブル作成処理
'データ作成処理

> そーなると やっぱり テーブルが存在するかどーかのチェックが必要なんですけど。。。
どうしても、On Error を使いたくないというのであれば、
DAOを使って、TableDefsコレクションをなめ回せばよいかも。
# システムテーブルを参照しても良いのかな?

Private Sub Sample()
    MsgBox TableCheck("テーブル1")
End Sub

Private Function TableCheck(TblName As String) As Boolean
'TblName に指定されたテーブルが存在するかどうかを確認します。
'TblNameは、大文字と小文字が区別されます。
    Dim Tbl As TableDef
    Dim Flag As Boolean
    
    For Each Tbl In CurrentDb.TableDefs
        If LCase(Tbl.Name) = TblName Then
            Flag = True
            Exit For
        End If
    Next Tbl
    TableCheck = Flag
End Function
#2272-0
RE#2257:おっと。。。
魔界の仮面弁士さん>
どうも ありがとうございますっ!! とうとう できました!!
チェックする関数が!!(って言っても コピっただけ)
テーブルデフを見るんですね。 勉強になりました!!

チェックして、存在したらDrop、無ければ何もしないってゆー
初期化のサブルーチンを作って、今回の問題は 解決です!!
本当にありがとうございました。 みんな めちゃめちゃ感謝してました!!
このページと関連する記事:
#12019-0クリスタルレポートでこんなこと可能ですか?1999-12-20(月) 09:44
#5246-1テーブルの追加1999-09-16(木) 10:46
#10253-0[Q]Accessのレコード削除エラー1999-11-24(水) 16:06
#28552-0最速ソート方法2000-08-24(木) 10:26
#20172-0mdbのテーブルのソートの仕方について2001-04-10(火) 17:45
#11091-0Ms-Accessですでに存在しているテーブルかどうかを返す関数2000-09-04(月) 10:11
#5686-0RE#5681:Select Into で作ったテーブルを削除したい1999-12-15(水) 12:18
#9681-0mdb内のテーブル存在チェック方法2000-04-17(月) 19:13
#1480-0スナップショットをDROP TABLE文で削除2002-01-21(月) 12:09
#41433-0件数の多いデータが削除できない2001-04-07(土) 21:46
お探しの情報は見つかりましたか?お困りの問題は解決しましたか?
サイト内検索, 似た記事検索で見つからなくてもあきらめずに掲示板で質問してみましょう。
VB初心者友の会があなたのお役に立てれば幸いです。また、本ページの投稿者の方々にこの場を借りて感謝致します。
本ページは過去ログを集めて自動構成しています。よろしければこのページに関するフィードバックをお願いします。
(※ 構成の誤り、広告等の不適切な記事、リンク切れ、読めないページの報告など)