VC++ .Net2003とAccess2000のSQLについて – プログラミング – Home

通知
すべてクリア

[解決済] VC++ .Net2003とAccess2000のSQLについて


hz
 hz
(@hz)
ゲスト
結合: 18年前
投稿: 4
Topic starter  

hzと申します。

VC++は初心者です。
自分でも調べてはいますが、解決できず困っております。
どなたか教え頂ければと思います。

開発環境は
Windows2000 VC++.Net2003 Access2000 です。

.NetからWindowsフォームアプリケーションを作成し、
Accessのmdbに接続、データの抽出といった処理を作成していますが、
エラーが起き、原因は分かったのですが、解決できずにいます。

内容は
まず、mdbにクエリを作成しています。
これは自作のデータ変換用関数(同mdbのモジュール内に存在)を組み込んで
レコードの変換や
テキスト型フィールドの連結等を行っています。

このクエリを.Netから呼び出した際に
(OleDbDataAdapterやOleDbConnection等を使用し)

「mdb内に定義してある自作の関数が見つからない」

テキストの連結に使用している
「'&'が認識できない」
といったエラーが発生しています。

mdbを起動してクエリを開いた場合は正常にレコードが表示されます。

調べたところ、
自作関数についてはなぜ認識しないのか分かりませんでしたが、
テキストの連結については'&'でなく'+'を使用する事が分かりました。

mdbで使用するSQLと
.Netで使用するSQLで構文に違いがあるように思うのですが、
もしかしてmdbで作成した、
(自作関数を組み込んだり、テキスト連結を行うような)クエリは
.Netでは読込めないのでしょうか?

それとも何か方法があるのでしょうか?

以上、宜しくお願いします。


引用未解決
トピックタグ
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

とりあえずこっちだけ
>テキストの連結に使用している
>「'&'が認識できない」
>といったエラーが発生しています。
参考にしているのは VB のソースでしょうか?
VBは文字列連結に & を使いますが、MC++は使えません。
ですので連結するには、System::Stringクラスを使って連結します。
(FormatやConcatメソッドを使って整形する。operator+は使えたか微妙)


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

あれ?思いっきり勘違いしていますね、私。
SQL文のことですか?

これだけだと、回答がつきにくいかもしれませんので、現在記述しているコードを
差し支えなければ提示してもらえるといいのですが。


返信引用
hz
 hz
(@hz)
ゲスト
結合: 18年前
投稿: 4
Topic starter  

Blueさん、ご返事ありがとうございます。

>あれ?思いっきり勘違いしていますね、私。
>SQL文のことですか?

SQL文のことです^^;
すみません。ちょっと分かりにくかったですね。

>これだけだと、回答がつきにくいかもしれませんので、現在記述しているコードを
>差し支えなければ提示してもらえるといいのですが。

今ちょっとソースはないですが、
処理を書いてみます。

public: int TestFunction()
{
   String* strCommand = ";
   strCommand = String::Concat( strCommand, S\n SELECT );
   strCommand = String::Concat( strCommand, S\n    * );
   strCommand = String::Concat( strCommand, S\n FROM );
   strCommand = String::Concat( strCommand, S\n qryTest );
   this->oledbAdapter->SelectCommand = new OleDbCommand( strCommand, this-
>oledbConnection );

   DataSet* objDataSet = new DataSet();
   this->oledbAdapter->Fill( objDataSet, Sbuf );

   ・・・・
}

です。
this->oledbAdapter->Fill( objDataSet, Sbuf );
でエラーになります。

mdbのクエリ(qryTest)のSQLの内容は

SELECT
   FieldA & FieldB AS AAA,
   UserFnc( FieldD ) AS BBB
FROM
   TableTest

です。

FieldA、FieldBはテキスト型のフィールドです。
UserFncは同じmdbのモジュールに定義している自作関数です。

宜しくお願い致します。


返信引用
hz
 hz
(@hz)
ゲスト
結合: 18年前
投稿: 4
Topic starter  

すみません。
>hz 2006/08/28(月) 14:18:49
の補足です。

public: int TestFunction()

はフォーム内のコードです。

oledbAdapterとoledbConnection はフォームに貼り付けています。

また、mdbへの接続は確認してますので、問題はないようです。


返信引用
ITO
 ITO
(@ITO)
ゲスト
結合: 22年前
投稿: 1235
 

>mdbで使用するSQLと
>.Netで使用するSQLで構文に違いがあるように思うのですが、
SQL文の構文に違いは、ありません。
>(自作関数を組み込んだり、テキスト連結を行うような)クエリは
>.Netでは読込めないのでしょうか?
普通、読込めないと思います。
ただ、.netでは何か特殊な間数があるかも知れません。
ODBC2.0のSDKにはなかったと思います。


返信引用
hz
 hz
(@hz)
ゲスト
結合: 18年前
投稿: 4
Topic starter  

ITOさん、ありがとうございます。

>>(自作関数を組み込んだり、テキスト連結を行うような)クエリは
>>.Netでは読込めないのでしょうか?
>普通、読込めないと思います。
そうなんですね・・・
mdb内にクエリを置く価値はあまりないのですね・・・
ではやはり、コード内にSQL文を埋め込む形でコーディングする方向でやってみます。

>ただ、.netでは何か特殊な間数があるかも知れません。
>ODBC2.0のSDKにはなかったと思います。
そうですね。.netの関数といった方向でも調べてみようと思います。

Blueさん、ITOさんありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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