お助け願います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
ADOのデータベース接続文字列は必要なかったんですか
おはようございます
woodさんからのメールを見て MSDNで見てみましたがいまいち意味が理解できなくて・・・
> strConn{データ接続を指定します。} の部分が抜けていませんか
このことですが実際にどんなことを入れていいのかわからなくて・・・
データを追加するデータベースは何かわかっていますか
DSN名 UID PSW など
つまりエラーメッセージはデータベースとアプリケーションが接続できていない
ことを示しているのではないでしょうか?
失礼な質問かもしれませんが、
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);
こういった使い方ができますので、参考にしてください。
ちょっとわからなかったので調べてみましたが・・・
DSN:データソース名
UID:ユーザーID
PSW:パスワード?
であってますか?
この情報ってどこからわかるんですか?
クリリンさんへ
プロパティの設定
(全般)
ODBCデータソース名を使用する』
のところで
『販売管理データベース』
を指定しています
(レコードソース)
Select * from 得意先マスター
というふうに設定しています
何か間違いがあるでしょうか?
ODBCデータソース名を使用する場合、
『販売管理データベース』をユーザDSNに登録していますか?
もししてなけでば、管理ツール→データソース(ODBC)でデータソースの登録をしてみてください。
レコードソースは、
コマンドタイプに「2ーadCmdTable」を選択し、
テーブル名に希望のテーブルを指定してください。
りんごさんへ
>ODBCデータソース名を使用する場合、
>『販売管理データベース』をユーザDSNに登録していますか?
>もししてなけでば、管理ツール→データソース(ODBC)でデータソースの登録をしてみてくだ
>さい。
管理ツールというのはどこにあるのでしょうか?
>レコードソースは、
>コマンドタイプに「2ーadCmdTable」を選択し、
>テーブル名に希望のテーブルを指定してください。
(レコードソース)
コマンドタイプ
2-adCmdTable
テーブル名またはストアドプロシージャ名
売上伝票
に設定しました
あっ!
ODBCでの登録は行っていますm(_ _)m
> 管理ツールというのはどこにあるのでしょうか?
コントロールパネル
> あっ!
> ODBCでの登録は行っていますm(_ _)m
失礼、見逃してました。(^^;
りんごさんからの修正をし実行したら
『[Microsoft][ODBC Microsoft Access Driver]FROM句の構文エラーです』
というエラーメッセージが出ました
どこがいけないのでしょうか?