hzと申します。
VC++は初心者です。
自分でも調べてはいますが、解決できず困っております。
どなたか教え頂ければと思います。
開発環境は
Windows2000 VC++.Net2003 Access2000 です。
.NetからWindowsフォームアプリケーションを作成し、
Accessのmdbに接続、データの抽出といった処理を作成していますが、
エラーが起き、原因は分かったのですが、解決できずにいます。
内容は
まず、mdbにクエリを作成しています。
これは自作のデータ変換用関数(同mdbのモジュール内に存在)を組み込んで
レコードの変換や
テキスト型フィールドの連結等を行っています。
このクエリを.Netから呼び出した際に
(OleDbDataAdapterやOleDbConnection等を使用し)
「mdb内に定義してある自作の関数が見つからない」
や
テキストの連結に使用している
「'&'が認識できない」
といったエラーが発生しています。
mdbを起動してクエリを開いた場合は正常にレコードが表示されます。
調べたところ、
自作関数についてはなぜ認識しないのか分かりませんでしたが、
テキストの連結については'&'でなく'+'を使用する事が分かりました。
mdbで使用するSQLと
.Netで使用するSQLで構文に違いがあるように思うのですが、
もしかしてmdbで作成した、
(自作関数を組み込んだり、テキスト連結を行うような)クエリは
.Netでは読込めないのでしょうか?
それとも何か方法があるのでしょうか?
以上、宜しくお願いします。
とりあえずこっちだけ
>テキストの連結に使用している
>「'&'が認識できない」
>といったエラーが発生しています。
参考にしているのは VB のソースでしょうか?
VBは文字列連結に & を使いますが、MC++は使えません。
ですので連結するには、System::Stringクラスを使って連結します。
(FormatやConcatメソッドを使って整形する。operator+は使えたか微妙)
あれ?思いっきり勘違いしていますね、私。
SQL文のことですか?
これだけだと、回答がつきにくいかもしれませんので、現在記述しているコードを
差し支えなければ提示してもらえるといいのですが。
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 2006/08/28(月) 14:18:49
の補足です。
public: int TestFunction()
はフォーム内のコードです。
oledbAdapterとoledbConnection はフォームに貼り付けています。
また、mdbへの接続は確認してますので、問題はないようです。
>mdbで使用するSQLと
>.Netで使用するSQLで構文に違いがあるように思うのですが、
SQL文の構文に違いは、ありません。
>(自作関数を組み込んだり、テキスト連結を行うような)クエリは
>.Netでは読込めないのでしょうか?
普通、読込めないと思います。
ただ、.netでは何か特殊な間数があるかも知れません。
ODBC2.0のSDKにはなかったと思います。
ITOさん、ありがとうございます。
>>(自作関数を組み込んだり、テキスト連結を行うような)クエリは
>>.Netでは読込めないのでしょうか?
>普通、読込めないと思います。
そうなんですね・・・
mdb内にクエリを置く価値はあまりないのですね・・・
ではやはり、コード内にSQL文を埋め込む形でコーディングする方向でやってみます。
>ただ、.netでは何か特殊な間数があるかも知れません。
>ODBC2.0のSDKにはなかったと思います。
そうですね。.netの関数といった方向でも調べてみようと思います。
Blueさん、ITOさんありがとうございました。