• 締切済み

3週間完全マスターVisualC++6.0データベース編を読まれた方に質問

現在私は、日経BP社から出版されている 「3週間完全マスターVisualC++6.0データベース編」を見て勉強をしているものです。 VCは全くと言っていいほど素人です。 上記の参考書のサンプルを元に勉強を進めてきて、 4日目と5日目の部分にして壁にぶつかりました。 そこで、参考書を読まれた方に質問が2つあります。 (1)71頁の中下段行に・・・ 「アプリケーションを実行して、ウインドウ上で右クリックしてみましょう。リストビューにCustomerテーブルのファーストネームフィールドとラストネームフィールドの内容が表示されます。」 の部分というのは具体的にどこをどう確認すればよいのか知りたいのです。全くわかりません。 コンパイルやビルドもエラーも発生もありませんでした。 アプリケーションを実行して、右クリックをしても何の反応もありませんでした。CD-ROMサンプルでも試しましたが 現状は同じでした。 (2)79頁(5日目)の下段行の・・・ 「アプリケーションを実行し、[AddNew]メニュー項目を選択すると、問題なくProductsテーブルにレコードを追加することが出来すはずです。同じレコードを2回追加しようとすると、データベースから例外メッセージが返されます。」 の部分では全くそのような動きがありませんでした。 [AddNew]メニュー項目を選択しても何も反応がなく、 問題ありありでした。 勿論ビルドは異常なしでした。 これはどうすればよいのかわかりませんし。 読者の人から聞かないと分からなさそうです。 もし、読者でこの内容に答えられる方いらっしゃいましたらお願いします。 もしいたら、私が3週間目に行くまでお付き合い願います。

みんなの回答

  • hitomura
  • ベストアンサー率48% (325/664)
回答No.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サンプルでも試しましたが と書かれているので、そのようなことはないと思いますが…

関連するQ&A

  • データーベース設計段階での質問です。

    データーベース設計段階での質問です。 管理しなければならないフラグ項目が100近くあり、そのフラグがよく検索対象になります。ただし、1レコードにつけられるフラグは10個までと決まっています。現在使用中のデータベースでは10個のカラムをつくっていて、そこに対象フラグのIDを列挙しています。 例えば A項目に対して1,20,34,56,78 B項目に対して3,6,11,15,42,78,89 のフラグがたっている場合、 name f0  f1  f2  f3  f4  f5  f6  f7  f8  f9 ------------------------------------------------------ A   1   20  34  56  78  null null null null null B   3   6   11  15  42  78  89  null null null となっています。他に日付などのカラムが5項目ほどあります。 このままだと検索等でややこしいことになるため テーブルを整理したいと思っています。 1.100個のboolean型のカラムを作る 2.ビットフラグ(ビットフィールド)のカラムを4つほど作って、検索時ビット演算する 3.項目名(ID)とフラグNo、だけの2カラムで構成した別テーブルを作ってjoinする 4.文字列としてIDを格納し、フルテキストインデックスをはる などがあると思うのですが、効率のいい設計がいまいちよくわかっていません。 上記の方法以外にも何かいい方法があると思います。 このような場合の、テーブル設計の方法を教えて下さい。

  • ワードの差込印刷で必要な行だけテーブルを作るには?

    エクセルからの差込印刷を考えています。 テーブルに差し込むのですが、 レコードごとにフィールドに入っている値の数が違います。レコードによってはあらかじめ作ったフィールドが空のときもあるのです。 この状態であらかじめ、ある程度のテーブルを作っても空欄ができるのが困ります。 フィールドの数にあわせてテーブルの行が増えたり減ったりすることはできるのでしょうか?

  • 同じ構造の2つのテーブルで登録済みかを確認したい

    あるデータベースの中に、テーブルAとテーブルBがあります。 テーブルAにはレコードが600件ほど登録されています。 テーブルBは、テーブルAと同じ構造を持ち、レコードが100件ほど登録されています。 この2つのテーブルについて、次のような動作を行うSQL文が知りたいです。 ---------------------------------------------------- テーブルBの任意のレコードについて、「そのレコードのURLの値」と同じURLの値を持つレコードがテーブルAに登録されてない場合、レコードをAに登録する。 なお実行の際、比較するのはURLの値のみであり、URLが同じなら他の値が異なっても登録しないものとする。 ---------------------------------------------------- たとえば、 テーブルA NAME URL (フィールド名) a aaa.com b bbb.com c ccc.com d ddd.com e eee.com テーブルB NAME URL (フィールド名) d ddd.com y eee.com f fff.com g ggg.com としたとき、そのSQL文を実行すると、 テーブルA NAME URL (フィールド名) a aaa.com b bbb.com c ccc.com d ddd.com e eee.com f fff.com g ggg.com となります。 最初はテーブルBをPHPで読み込み、レコード一つ一つを登録済みかチェックしてテーブルAに登録する、という方法を考えました。 しかし、SQLを使っている以上、もっといい方法があるのではないかと思い、質問させていただきました。 このような動作を行うSQL文をどなたか教えてください。 よろしくお願いします。

  • ExcelVBAでMySQLのAUTO_INCREMETを

    まず、MySQLで作ったデータベースにAUTO_INCREMETに設定したフィールドがあります。 そして、ExcelVBAのADOで新しいレコードを追加した直後にそのフィールドの値 を取得しようとしています。 レコードセット.addNew レコードセット.update レコードセット.MoveLast としても、取得できるのは更新前の値です。 開くときはadOpenDynamic, adLockOptimisticにしているのですが、 他に何か問題があるのでしょうか? ちなみに、一旦closeした後は新しい値が取得できます。

    • ベストアンサー
    • MySQL
  • VBAでデータベースの構築をしています。

    VBAでデータベースの構築をしています。 全く同じフィールドを持つ2つのテーブルがあり、その2つのテーブルを 比較し、重複するレコードのみを3つ目のテーブルに抽出したいのですが、 可能でしょうか? 『重複するレコードを削除する』というのはウェブで検索すると出てくる のですが・・・ よろしくお願いいたします。

  • 実行時エラー 3020の対策

    アクセス2003で次のエラーが発生します。 実行時エラー 3020 Update または CancelUpdateメソッドには、対応するAddNewまたはEditメソッドが必要です。 以下のソースは、「テスト」フォームにtestフィールドがある簡単なデータベースですが、全レコードを最初から最後までtestフィールドの先頭に"abc "を付加するというものです。 Public Sub Test() Dim form_name as String Dim frmObj As Form Dim rstObj As Recordset Dim fld_dat As String form_name = "テスト" DoCmd.OpenForm form_name Set frmObj = Application.Forms(form_name) Set rstObj = frmObj.Recordset '先頭のレコードに移動する DoCmd.GoToRecord acDataForm, form_name, acFirst Do fld_dat = rstObj.Fields("test").Value fld_dat = "abc " & fld_dat rstObj.Fields("test").Value = fld_dat '<--- *** ここでエラー *** '次のレコード DoCmd.GoToRecord acDataForm, form_name, acNext DoEvents Loop While frmObj.NewRecord = False End Sub

  • アクセスのクエリーのことで教えてください

     テーブル1とテーブル2があってクエリーでリレーションシップを組むときに  結合プロパティを「テーブル1の全レコードと、テーブル2の同じ結合フィールドのレコードだけを含める。」にして表を作ろうとしたのですが、テーブル2に レコードが無い場合、テーブル1,2を使って作ったクエリー1で表を作り、 ビルドでクエリー1の項目を貼り付けて、計算させると、テーブル2にレコードが無いと空欄になっているためか、計算がうまく行きません。この問題を解決するにはどのような方法をとればよいですか? ほんとにこまったちゃんになっているので教えてください。 

  • MySQL+PHP 特定レコードの更新と作成

    MySQL+PHPの初心者です。 特定レコードの変更または新規作成のサンプルなどあればお教えいただけるでしょうか。 例えば特定商品の単価のレコードがあれば新しい単価に変更と そのレコードが無ければ新規にレコードを作成するようなケースになります。 VBAなどでは検索のSQL文からレコードセットを作成し レコードが無い場合は レコードセット名.addnewで必要なフィールドに 値をセットし レコードセット名.update 該当するレコードがあった場合は レコードセット名.edit で必要なフィールドに 値をセットし レコードセット名.updateなど簡単な処理なのですが MySQL+PHP の場合データの検索と新規レコードの単純な記述は ある程度はわかるのですが上記のようなケースは実際どのように 書かれているのかお教え願えると幸いです。 商品単価テーブルには商品コードと単価のフィールドになります。 よろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • 【Access】レコードが削除できない

    どんな操作をしてそうなったかわからないんですが、 テーブルの最終行に全フィールドのデータが「#Deleted」になっているレコードが出来てしまいました。 このレコードを削除し、一旦テーブルを閉じて、また開くと同じものが復活しています。 どうすれば消せますでしょうか??

  • ACCESS 以下のようなレコードを抽出するSQL

    ACCESSのデータベースで あるフィールド(フィールドAとします)の値に対して、 別のフィールド(フィールドBとします)の値が1つに決まる データベースがあるとします。 例えば、フィールドAの値が1のレコードは、 どのレコードもフィールドBの値はaである。など このようなデータベースでこのような関係になっていないレコード 例えば、フィールドAの値が1のレコードの中に フィールドBの値がaであるレコードと フィールドBの値がbであるレコードがある。など を抽出するSQLはどのように記述すればよいでしょうか。 テーブル名はTABEL1とします。 次の2つのケースでお願いします。 (1)フィールドAの値が異なればフィールドBの値が異なる場合 例えば、フィールドAの値が1で、フィールドBの値がaであるレコードが ある時、フィールドAの値が1でないレコードの中には、   フィールドBの値がaであるレコードが存在しない場合   (2)フィールドAの値が異なるがフィールドBの値が同じこともある場合 例えば、フィールドAの値が1で、フィールドBの値がaであるレコードが あっても、フィールドAの値が1でないレコードの中にも、   フィールドBの値がaであるレコードが存在する場合 【回答例】(ただし、1,a,bなどの具体的な値は使わないこと) ・フィールドAの値が1のレコードを表示する例 SELECT * FROM TABLE1 WHERE フィールドA=1; ・フィールドAの値が1でフィールドBの値がaのレコードを表示する例 SELECT * FROM TABLE1 WHERE フィールドA=1 AND フィールドB='a'; ・フィールドAの値が1でフィールドBの値がaのレコードと  フィールドAの値が1でフィールドBの値がbのレコードを表示する例 SELECT * FROM TABLE1 WHERE (フィールドA=1 AND フィールドB='a') OR (フィールドA=1 AND フィールドB='b'); この目的は、データベースに問題があり、 問題となっているレコードを見つけて直したいのです。 よろしくお願いします。