データベースのレコードの追加

[戻る]
天草 銀 [E-Mail] 2002/07/11(木) 10:19:29
お助け願いますm(_ _)m

windows2000
VC++6.0
MFC
ダイアログベース

売上伝票というデータベースがあります
それは伝票番号・得意先・商品名・数量・単価・金額・担当者コード・売上年月日という構成の
ものです

ダイアログ画面からこのデータベースに追加登録ができずに悩んでいます

現状はこうです
ダイアログ画面に上から

伝票番号エディットボックス    ID:IDC_EDIT1
                          タイプ:CString
                          メンバ:m_input1

得意先名コンボボックス         ID:IDC_COMBO1
                          タイプ:CString
                          メンバ:m_combo1

商品名コンボボックス           ID:IDC_COMBO2
                          タイプ:CString
                          メンバ:m_combo2

数量エディットボックス         ID:IDC_EDIT2
                          タイプ:CString
                          メンバ:m_input2

単価エディットボックス         ID:IDC_EDIT3
                          タイプ:CString
                          メンバ:m_input3

金額エディットボックス         ID:IDC_EDIT4
                          タイプ:CString
                          メンバ:m_input4

担当者名コンボボックス         ID:IDC_COMBO3
                          タイプ:CString
                          メンバ:m_combo3

ボタン1コ


そしてメニューバーのプロジェクト→プロジェクトへ追加→コンポーネントおよびコントロール
で以下の2つを追加しました
Microsoft ADO Data Control 6.0 (SP4) (OLEDB)
Microsoft DataGrid Control 6.0 (SP4) (OLEDB)

それぞれをダイアログ画面に貼り付けます

設定は以下の通りです
ADOの方は
ID:IDC_ADODC5
タイプ:CAdodc
メンバ:m_adodc5

DataGridの方は
ID:IDC_DATAGRID5
タイプ:CDataGrid
メンバ:m_grid5
プロパティの全ページでDataSourceをID:IDC_ADODC5にします


ボタンを押したタイミングでデータベースへ追加登録ができません

ソースは以下の通りです

void CSubDlg::OnButton1() 
{
        // TODO: この位置にコントロール通知ハンドラ用のコードを追加してください

        CString strWk;
        strWk = "";

        GetDlgItemText(IDC_EDIT1, m_input1);
        GetDlgItemText(IDC_EDIT2, m_input2);
        GetDlgItemText(IDC_EDIT3, m_input3);
        GetDlgItemText(IDC_EDIT4, m_input4);
        GetDlgItemText(IDC_EDIT5, m_input5);
        GetDlgItemText(IDC_COMBO1, m_combo1);
        GetDlgItemText(IDC_COMBO2, m_combo2);
        GetDlgItemText(IDC_COMBO3, m_combo3);

        strWk = "insert into 売上伝票(伝票番号,得意先名,商品名,数量,単価,金額,担当
者コード,売上年月日) values('";
        strWk = strWk + m_input1;
        strWk = strWk + "','";
        strWk = strWk + m_combo1;
        strWk = strWk + "','";
        strWk = strWk + m_combo2;
        strWk = strWk + "','";
        strWk = strWk + m_input2;
        strWk = strWk + "','";
        strWk = strWk + m_input3;
        strWk = strWk + "','";
        strWk = strWk + m_input4;
        strWk = strWk + "','";
        strWk = strWk + m_combo3;
        strWk = strWk + "','";
        strWk = strWk + m_input5;
        strWk = strWk + "')";

        UpdateData(TRUE);
        m_adodc5.SetRecordSource(strWk);
        m_adodc5.Refresh();
}

これで実行し それぞれ値を入れてボタンを押すと

『オブジェクトが閉じている場合は操作は許可されません』

というメッセージが出てデータベースへの追加登録ができません

なぜですか?? ご指導の程お願いいたしますm(_ _)m

wood 2002/07/11(木) 11:21:18
ADOのデータベース接続文字列は必要なかったんですか

天草 銀 [E-Mail] 2002/07/11(木) 11:40:42
おはようございます
woodさんからのメールを見て MSDNで見てみましたがいまいち意味が理解できなくて・・・

> strConn{データ接続を指定します。} の部分が抜けていませんか

このことですが実際にどんなことを入れていいのかわからなくて・・・

wood 2002/07/11(木) 12:11:57
データを追加するデータベースは何かわかっていますか
DSN名 UID PSW など
つまりエラーメッセージはデータベースとアプリケーションが接続できていない
ことを示しているのではないでしょうか?

クリリン 2002/07/11(木) 13:06:28
失礼な質問かもしれませんが、
ADOコントロールのプロパティの全般で、接続のソースなどの設定は行われていますでしょうか?
もしくは、設定にミスは無いでしょうか?



余談ですが、strWk = strWk + m_input1;→strWK += m_input1;
、
strWk = strWk + m_input1;
strWk = strWk + "','";...
↓
strWk.Format("insert into 売上伝票(伝票番号,得意先名,商品名,数量,単価,金額,
              担当者コード,売上年月日) values(
              '%s','%s','%s','%s','%s','%s','%s','%s'",
             m_input1, m_combo1, m_input2, m_input3,
             m_input4, m_combo3, m_input5);
こういった使い方ができますので、参考にしてください。

天草 銀 [E-Mail] 2002/07/11(木) 13:47:01
ちょっとわからなかったので調べてみましたが・・・
DSN:データソース名
UID:ユーザーID
PSW:パスワード?
であってますか?

この情報ってどこからわかるんですか?

天草 銀 [E-Mail] 2002/07/11(木) 13:54:11
クリリンさんへ

プロパティの設定
(全般)
ODBCデータソース名を使用する』
のところで
『販売管理データベース』
を指定しています

(レコードソース)
Select * from 得意先マスター

というふうに設定しています

何か間違いがあるでしょうか?

りんご 2002/07/11(木) 14:39:15
ODBCデータソース名を使用する場合、
『販売管理データベース』をユーザDSNに登録していますか?
もししてなけでば、管理ツール→データソース(ODBC)でデータソースの登録をしてみてください。

レコードソースは、
コマンドタイプに「2ーadCmdTable」を選択し、
テーブル名に希望のテーブルを指定してください。

天草 銀 [E-Mail] 2002/07/11(木) 15:11:45
りんごさんへ


>ODBCデータソース名を使用する場合、
>『販売管理データベース』をユーザDSNに登録していますか?
>もししてなけでば、管理ツール→データソース(ODBC)でデータソースの登録をしてみてくだ
>さい。

管理ツールというのはどこにあるのでしょうか?


>レコードソースは、
>コマンドタイプに「2ーadCmdTable」を選択し、
>テーブル名に希望のテーブルを指定してください。

(レコードソース)
コマンドタイプ
2-adCmdTable

テーブル名またはストアドプロシージャ名
売上伝票

に設定しました

天草 銀 [E-Mail] 2002/07/11(木) 15:16:14
あっ!
ODBCでの登録は行っていますm(_ _)m

駄犬 [E-Mail] 2002/07/11(木) 15:19:02
> 管理ツールというのはどこにあるのでしょうか?

コントロールパネル

駄犬 [E-Mail] 2002/07/11(木) 15:20:51
> あっ!
> ODBCでの登録は行っていますm(_ _)m
失礼、見逃してました。(^^;

天草 銀 [E-Mail] 2002/07/11(木) 15:32:42
りんごさんからの修正をし実行したら

『[Microsoft][ODBC Microsoft Access Driver]FROM句の構文エラーです』

というエラーメッセージが出ました

どこがいけないのでしょうか?

古いスレッドには追加発言できません。