はじめまして、いつも参考にさせて頂いております。
早速ですが、VC++、ADOを使ってSQLServer7.0のテーブルのデータの追加したいと思っており
ます。
AddNewメソッドでデータを追加をしたいのですがうまくいきません。
テーブルにデータが1件もない時は、AddNewでデータをうまく追加できるのですが、テーブル
にデータが1件以上あるとき、エラーとなってしまい、新規データが追加できません。何がおか
しいのでしょうか?テーブルの設定は大丈夫なはずなのですが。。
何とか皆さんのお知恵を貸していただけないでしょうか。よろしく願いいたします。
以下に問題部分のコード(編集したやつ)を載せてます。
void CADOAGHKJ::GetDbData(_ConnectionPtr pConn)
{
m_table=_T(tbl_aghkj);//テーブル名
_RecordsetPtr pRs; //レコードセットオブジェクトポインタ
CustomCustomerRs oCustomCustomer; //データベースとVC++をバインドするオブジェクト
IADORecordBinding *picRs = NULL; //バインド ポインタ
HRESULT hr;
pRs.CreateInstance(__uuidof(Recordset));
if(FAILED(hr = pRs->Open(m_table, pConn, adOpenDynamic, adLockOptimistic,
adCmdTable)))
return -1;
if(FAILED(hr = pRs->QueryInterface(__uuidof(IADORecordBinding),(LPVOID*)
&picRs)))
return -1;
if(FAILED(hr = picRs->BindToRecordset(&oCustomCustomer)))
return -1;
//レコードを追加
oCustomCustomer.m_lCustomer_ID =10;
strcpy(oCustomCustomer.m_szAddress, aaa);
strcpy(oCustomCustomer.m_szCustomer_Name, bbb);
strcpy(oCustomCustomer.m_szPhone_Number, ccc);
strcpy(oCustomCustomer.m_szPostal_Code, ddd);
if(FAILED(hr = picRs->AddNew(&oCustomCustomer)))
return -1;
if(picRs){
picRs->Close();
picRs->Release();
}
return 0;
}
MSDNきちんと読みなさい!!
「AddNew」の説明きちんと理解できていないでしょう
「追加するための空のレコードを用意してくれる」って書いてませんでしたか
1回目で書き込んでほしい内容書き込まれていますか?
空のレコードが1件存在するだけで何も書かれていないのではないですか
解決しました。ご回答くださいましたwoodさんありがとうございました。