現在私は、日経BP社から出版されている
「3週間完全マスターVisualC++6.0データベース編」を見て勉強をしているものです。
VCは全くと言っていいほど素人です。

上記の参考書のサンプルを元に勉強を進めてきて、
4日目と5日目の部分にして壁にぶつかりました。

そこで、参考書を読まれた方に質問が2つあります。

(1)71頁の中下段行に・・・
「アプリケーションを実行して、ウインドウ上で右クリックしてみましょう。リストビューにCustomerテーブルのファーストネームフィールドとラストネームフィールドの内容が表示されます。」

の部分というのは具体的にどこをどう確認すればよいのか知りたいのです。全くわかりません。
コンパイルやビルドもエラーも発生もありませんでした。
アプリケーションを実行して、右クリックをしても何の反応もありませんでした。CD-ROMサンプルでも試しましたが
現状は同じでした。

(2)79頁(5日目)の下段行の・・・
「アプリケーションを実行し、[AddNew]メニュー項目を選択すると、問題なくProductsテーブルにレコードを追加することが出来すはずです。同じレコードを2回追加しようとすると、データベースから例外メッセージが返されます。」

の部分では全くそのような動きがありませんでした。
[AddNew]メニュー項目を選択しても何も反応がなく、
問題ありありでした。
勿論ビルドは異常なしでした。
これはどうすればよいのかわかりませんし。
読者の人から聞かないと分からなさそうです。

もし、読者でこの内容に答えられる方いらっしゃいましたらお願いします。
もしいたら、私が3週間目に行くまでお付き合い願います。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

>現在私は、日経BP社から出版されている


>「3週間完全マスターVisualC++6.0データベース編」を見て勉強をしているものです。
(中略)
>上記の参考書のサンプルを元に勉強を進めてきて、
>4日目と5日目の部分にして壁にぶつかりました。
…マジ?
いや、同じ本を買った(そして積ん読(^_^;))人間としてはサンプルが動かないというのは心配で心配で…

とりあえず、追加した関数に処理が移っているかどうか以下の手順で確認してみてください。
(A)問題のプロジェクトをVC++で開く。
(B)(1)(2)のどちらも追加部分の始めの方に"pDoc = GetDocument();"という行があるので、そこにブレークポイントを設定する。
(C)「実行」ボタンを押すとプログラムが起動するので、指定された動作を行ってみる。プログラムがブレークポイントで一時停止すれば、追加した関数に処理が移っていることになります。

それといくつか確認したいことがあるのですが、4日目のADOMFC1View.hの中でOnRButtonDown()は
//{{AFX_MSG(CADOMFC1View)

//}}AFX_MSG
の間にありますか?
5日目のADOMFC1View.hの中でOnRecordsetAddnew()は?
上の関数の宣言はどうなっています(特に戻り値の部分)?

というのも、本の書き方がリスト4.12からちょっと変わっているんです。ClassWizardの操作手順をしっかりと書いていたのがただ単に「ClassWizardを使用してxxxメッセージに対するyyy関数を作成し」で終わらせているという風に。
ですから、うっかりこの指示を見落とした可能性があるのでは?と思い逆質問させていただきました。
>CD-ROMサンプルでも試しましたが
と書かれているので、そのようなことはないと思いますが…
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Q入門サイトのサンプルプログラムがビルド出来ません

こちらのサイトの
http://www5b.biglobe.ne.jp/~suugaku/vc++kougi/kiso/dai1koudai7wa.html
サンプルを作成してビルドしてみたのですが、

error C2248: 'System::Windows::Forms::Control::x' : private メンバ (クラス 'System::Windows::Forms::Control' で宣言されている) にアクセスできません。
'System::Windows::Forms::Control::x' の宣言を確認してください。

といったエラーがたくさん(100以上)出てビルドできません。
コピペなので入力誤りはないと思うのですが、何がいけないのでしょうか?

Aベストアンサー

 こんばんは。

 どうやら、VC2008とVC2010のC++CLIでは、構文解釈の能力が異なる様です。
 ソース中に散見する、

 a[x][y]

 と書かれた配列は、アンマネージドの2次元配列で、#NetFrameworkの2次元配列は、

 a[x, y]

 と書きます。
 推測になりますが、ソースの中にアンマネージド配列が混ざりこんでいて、その部分の判別に、VC2008とVC2010の構文解釈精度の差が出たのではないでしょうか。
 要は、アンマネージド配列、

 int x[400]

 を、

 System::Windows::Forms::Control::x

 と勘違いしたと言う事です。まあ、この手のトラブルは、良くある事です。
 VC2008でビルドさせたければ、既に回答にある様に、xとyの名前を変えるのが一番手っ取り早いでしょう。
 願わくば、Form1クラスのメンバ変数として納めたい所ですが、アンマネージド配列なので、そのままではForm1のメンバ変数として、書かせてくれません。
 メンバ変数としてForm1の中に収めるには、マネージド配列として、少なくとも、

public ref class Form1 : public System::Windows::Forms::Form
{
public:
Form1(void)
{
InitializeComponent();
//
//TODO: ここにコンストラクター コードを追加します
//
a1 = gcnew array<int, 2>(20, 20);
a2 = gcnew array<int, 2>(20, 20);
p = gcnew array<int, 2>(20, 20);
cn1 = gcnew array<int>(20);
cn2 = gcnew array<int>(20);
x = gcnew array<int>(400);
y = gcnew array<int>(400);
}

private: int n;
private: array<int, 2>^ a1;
private: array<int, 2>^ a2;
private: array<int, 2>^ p;
private: array<int>^ cn1;
private: array<int>^ cn2;
private: array<int>^ x;
private: array<int>^ y;
private: int s;
}

 の様に書いた上で、2次元配列アクセスの個所を、

 a1[x][y]

 から、

 a1[x, y]

 の様にしなければいけません。
 テキスト置換で、][ を、, にするのが手っ取り早いでしょう。

 こんばんは。

 どうやら、VC2008とVC2010のC++CLIでは、構文解釈の能力が異なる様です。
 ソース中に散見する、

 a[x][y]

 と書かれた配列は、アンマネージドの2次元配列で、#NetFrameworkの2次元配列は、

 a[x, y]

 と書きます。
 推測になりますが、ソースの中にアンマネージド配列が混ざりこんでいて、その部分の判別に、VC2008とVC2010の構文解釈精度の差が出たのではないでしょうか。
 要は、アンマネージド配列、

 int x[400]

 を、

 System::Windows::Forms::Control::x

 と勘違い...続きを読む

QMicrosoft の Visual C++ サンプル がビルドできません

こんにちは。

以下サイトからサンプルプログラムをダウンロードしました。
http://msdn2.microsoft.com/ja-jp/library/ea8hhwb6(VS.80).aspx

上記サイトに書いてある通り、VS2005 を使用し、
「.sln」ファイルを開き、「ビルド」メニューの「ソリューションのビルド」をクリックすると、
以下の結果になり、ビルドできませんでした。

========== ビルド: 0 正常終了または最新の状態、0 失敗、1 スキップ ==========

また、個々のファイルを「ビルド」メニューの「コンパイル」すると
エラーメッセージ「操作を完了できませんでした。エラーを特定できません 」が
表示されます。

原因として何が考えられるでしょうか?

Aベストアンサー

ソリューションプラットフォームが
Itaniumとかx64になっているのではないでしょうか
MFCがない場合は
afxwin.hがないとか表示されると思います。

QMFCアプリケーションのスケルトンのビルドでいきなりエラー

Visual Studio2008のVC++でMFCアプリケーションを作る為
プロジェクトのスケルトンを作った段階で(コーディングは
一切してない)ビルドしたらいきなりエラーが出て困っています。

エラー内容:error PRJ003 cmd.exeの起動中にエラーが発生しました。

Aベストアンサー

Win32SDKなどのプロジェクトは構築できますか?

ツール > オプション > プロジェクトおよびソリューション
実行ファイルの パス設定などを見直してみましょう

Qデバッグビルドとリリースビルドで計算結果が違う

こんにちは。
VC++.netで暗号化ソフトを作っているんですが、デバッグモードで実行した結果と、リリースモードで実行して得られる結果が違うので困っています。
原因としては、何が考えられるでしょうか?

warningで、「warning C4267: '=' : 'size_t' から 'int' に変換しました。データが失われているかもしれません。」と表示されましたが、(int)でキャストしてから警告は出なくはなっているんですが。

もう一つ、「LINK : warning LNK4089: 'SHELL32.dll' へのすべての参照は /OPT:REF によって廃棄されます。」と出ていますが、これは関係なさそうですので無視しています。

もしかして、同じような経験をされた方がいるんではないかと思い質問しました。
よろしくお願いします。

Aベストアンサー

値を初期化しないで使用した時に、この現象が発生する可能性が高いです。
例えば、関数のなかで、int a;と変数を動的変数として宣言し、このaを初期化せずに、
int b = a*a;
を実行した場合、デバッグモードの場合は、0になる可能性が高く、リリースモードの場合は、不定(前回のスタック領域で使用された値)になります。

QBCCからVC++にしたらwindowsアプリケーションが実行できなくなりました。

bccとDirectX9.0を使いゲームプログラミングを学習していましたが、この度Visual c++6.0にしたところ、今まで実行できていたwindowsアプリケーションが実行できなくなりました。コンパイルは正常に実行できるんですが、実行しようとするとエラーログが作成され実行できません。以下はエラーログの内容です。

ライブラリの更新日 2003/11/30
年/月/日 時:分:秒 プロセス(スレッド)ID ファイル名 行数 メッセージ
2006/01/08 23:32:16.195 01148(03580) Music.cpp 158REGDB_E_CLASSNOTREG, Class not registered
DirectMusicPerformance8 オブジェクトの作成に失敗。
2006/01/08 23:32:16.256 01148(03580) WinMain.cpp 110 g_pMusic->Init FAILED


どうかご教授御願いします。

bccとDirectX9.0を使いゲームプログラミングを学習していましたが、この度Visual c++6.0にしたところ、今まで実行できていたwindowsアプリケーションが実行できなくなりました。コンパイルは正常に実行できるんですが、実行しようとするとエラーログが作成され実行できません。以下はエラーログの内容です。

ライブラリの更新日 2003/11/30
年/月/日 時:分:秒 プロセス(スレッド)ID ファイル名 行数 メッセージ
2006/01/08 23:32:16.195 01148(03580) Music.cpp 158REGDB_E_C...続きを読む

Aベストアンサー

このエラーメッセージは問題発生行情報を通知してくれていますから、ブレークポイントを設定して調査してはいかがでしょうか。私のところではすでにVC++6.0は使用しておりませんから、具体的なことは分かりません。

ちなみに、VC++6.0プロジェクトのVisual C++ 2005への移植は多くの場合、ソースコードの書き換えが必要になっているようです。また、リンクされるシステムライブラリも変更され、VC++6.0の問題解決に関する情報はあまりアップされないと思います。参考のために、無料で利用できるVisual C++ 2005 Express Editionの参考URLを紹介しておきます。この機会に乗り換えてみてはいかがでしょうか。無料ですし...

参考URL:http://www.ttoyota.com/php/myvcee.php


人気Q&Aランキング

おすすめ情報