ODBC使用でAccessのデータソースを開くと・・・。 – 固定ページ 2 – プログラミング – Home

ODBC使用でAccessのデータソー...
 
通知
すべてクリア

[解決済] ODBC使用でAccessのデータソースを開くと・・・。

固定ページ 2 / 2

不良PG
 不良PG
(@不良PG)
ゲスト
結合: 23年前
投稿: 188
 

>record_RS.GetFieldValue([TableName],string_CS);
なぜフィールド名ではなく、テーブル名なのですか?

エラーが出るのは、どの個所でしょう?
デバッカで追えば分るはずですが・・


返信引用
Takeshi
 Takeshi
(@Takeshi)
ゲスト
結合: 23年前
投稿: 83
 

お世話になっております。

すいません、

record_RS.GetFieldValue([TableName],string_CS);

の件ですが、テーブル名 と フィールド名は同じなんです。

それから、エラーになる訳ではないんです。

record_RS.Open(CRecordset::snapshot,[TableName],CRecordset::readOnly);

このオープンのところで、警告ダイアログが出るのは確認してます。
あくまで警告なので、フォームが表示されて正常に起動したようには見えます。
ただ、読み込みたいデータは表示されていませんが・・・。


返信引用
クリリン
 クリリン
(@クリリン)
ゲスト
結合: 23年前
投稿: 175
 

余計な口出しかもしれませんが、データベースを使用する場合、何処でエラーが発生しているか
わかりにくいので、エラートラップ処理[try,catch]を使用してエラーの内容を確認およびエラ
ー処理を追加してみてはいかがでしょうか?
ある程度のエラー内容がわかると思いますよ。

余談ですが[データベース.mdb]を一度フルパスで行ってみてはいかがでしょうか?
まぁ、そんなミスはしてないとは思いますが、焦っていると結構、初歩的なミスを犯していたり
するものですからね・・・(~_~;)

ちなみにADOでの処理ならば、コンボボックスにデータを格納までのソースは記述できるので
すが、あいにく、ODBC経由では行っていないので・・・


返信引用
不良PG
 不良PG
(@不良PG)
ゲスト
結合: 23年前
投稿: 188
 

コントロールパネルの「データソース(ODBC)」のユーザーデータソースに「MS Access
Database」は入っていますか?


返信引用
Takeshi
 Takeshi
(@Takeshi)
ゲスト
結合: 23年前
投稿: 83
 

クリリンさん、ありがとうございます。参考にさせて頂きます。

不良PGさん、コントロールパネルの「データソース(ODBC)」の
ユーザーDSN は空でした。

これについては、システムDSN を設定していたので
それでOKだと思っていました。ユーザーDSN も必要なんですか?

でもでも、ユーザーDSNを設定したら
警告メッセージは無くなって、別のエラーになったので良かったです。
お蔭様で一つ前進しました。今度は「FROM句の構文エラー」らしいですが、
しばらく自分で考えてみます。解決できないようならまた質問させて頂きます。
ありがとうございました。


返信引用
クリリン
 クリリン
(@クリリン)
ゲスト
結合: 23年前
投稿: 175
 

テーブル名 と フィールド名 が同じなのですよね?
こうしてはいかがでしょうか

select t1.データ from データ t1

としてはいかがでしょうか?もしかしたら、名前の解決が上手くいっていないのではないでしょ
うか?
今まで同じテーブル名 と フィールド名 をした事がないので確信が持てませんが・・・

でも、これは、開発するのであれば、問題ですね。
というのも、第三者がコードを見た時に混乱するからです。また、時間が経つと自分自身も忘れ
てしまい、修正が一苦労しますよ!
参考までに私は、テーブル名は頭に[TBL_TEST]や[MST_TEST]みたいにしています。

えらそうな事言ってすいません。m(__)m


返信引用
Takeshi
 Takeshi
(@Takeshi)
ゲスト
結合: 23年前
投稿: 83
 

こんばんは、ありがとうございます。

ご忠告通りテーブル名とフィールド名は分ける事にします。
その方が余計な混乱をしないで済みそうです。

[TBL_XXX]、[ROW_XXX] などと区別していきます。
またお願いします。


返信引用
Takeshi
 Takeshi
(@Takeshi)
ゲスト
結合: 23年前
投稿: 83
 

■動 作 環 境:WindowsNT4.0
■開 発 環 境:Visual C++6.0
■データベース:Access2000

お世話になってます。
実行時に 「FROM句の構文エラーです」 となるのは、

●ファイル CXxxRecordset.cpp の

CString CXxxRecordset::GetDefaultSQL()
{
return _T(select FIELD_NAME from TABLE_NAME);
}

このデフォルトSQLの from が、間違っているという事ですよね?
確認するのはここだけでいいんでしょうか。


返信引用
クリリン
 クリリン
(@クリリン)
ゲスト
結合: 23年前
投稿: 175
 

構文に間違いはないと思われます。
とりあえず、スクリプト文をDB内でチェックしてみてはいかがでしょうか?
たとえば、ACCESSであれば、クエリーでSQLモードにして、スクリプト文を実行。
SQL Server であれば、クエリーアナライザなど、実行結果が出力されるツールを使用して、
結果が返ってくるかどうかしてみてはいかがでしょうか?
案外、テーブル名やフィールド名、検索条件の入力ミスなどが発見できますよ。
また、スクリプトをプログラム内で作成しているのであれば、デバッグでスクリプトが生成され
た処でブレイクして、スクリプト文をコピーする・・・という手もあります。
ま、他にも方法はありますけど、手っ取り早い方法です。


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

GetDefaultSQLはOpenの第二引数にNULLを指定したときに
デフォルトで使うSQLですので、
Openの第二引数に何か指定している場合は、そちらも確認が必要です。


返信引用
Takeshi
 Takeshi
(@Takeshi)
ゲスト
結合: 23年前
投稿: 83
 

お世話になっております。

SQLモード というのは、[表示(V)]の[SQLビュー(Q)]の事ですか?
これを選ぶとSQL文が表示されましたが。これで結果が正しければOKって事ですか?

Q.ところで意味が分からない言葉だったんですが、スクリプト文 とは何ですか?

でもとりあえず、レコードの Open を NULL にして、
-------------------------------------------------------------------------------
▼ファイル名:XxxView.cpp

MyRecordset.Open(CRecordset::snapshot,NULL,CRecordset::readOnly);

-------------------------------------------------------------------------------
▼ファイル名:XxxRecordset.cpp

CString CExpertRecordset::GetDefaultConnect()
{
return _T(ODBC;DSN=MS Access Database;DBQ=xxx.mdb);
}

CString CExpertRecordset::GetDefaultSQL()
{
return _T(SELECT フィールド名 FROM テーブル名);
}

-------------------------------------------------------------------------------

GetDefaultConnect,GetDefaultSQL の記述を見に行くようにしたら、
レコードをうまくOpenできました。
二つの場所の記述に整合性が無かったのが原因だと思います。
NULL にしてしまうのもひとつの手なんですね。

dairygoodsさん、クリリンさん、ありがとうございました。


返信引用
クリリン
 クリリン
(@クリリン)
ゲスト
結合: 23年前
投稿: 175
 

>SQLモード というのは、[表示(V)]の[SQLビュー(Q)]の事ですか?
はい、そうです。
>スクリプト文 とは何ですか?
SQLスクリプト文を指します。
この、[SELECT フィールド名 FROM テーブル名]も、SQLスクリプト文なのです。


返信引用
Takeshi
 Takeshi
(@Takeshi)
ゲスト
結合: 23年前
投稿: 83
 

お世話になってます。

SQLスクリプト文 = SQL文 で宜しいんですね?
SQL文も勉強して使いこなせるようになりたいですね。

全ての基本は SELECT文 みたいですが。
また宜しくお願いします。


返信引用
固定ページ 2 / 2

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました