TAG:
Using the ADO AddNew Function 1: void CADOMFC1View::OnRecordsetAddnew() 2: { 3: _RecordsetPtr pRecordSet; 4: CADOMFC1Doc * pDoc; 5: pDoc = GetDocument(); 6: 7: HRESULT hr; 8: _bstr_t bstrQuery("SELECT * FROM Products WHERE PartNumber IS NULL"); 9: _variant_t vNull; 10: vNull.vt = VT_ERROR; 11: vNull.scode = DISP_E_PARAMNOTFOUND; 12: 13: try 14: { 15: hr = pRecordSet.CreateInstance(_uuidof(Recordset)); 16: if (SUCCEEDED(hr)) 17: { 18: pRecordSet->PutRefActiveConnection(pDoc->m_pConnection); 19: hr = pRecordSet->Open(_variant_t(bstrQuery), vNull, 20: adOpenForwardOnly, adLockOptimistic, adCmdText); 21: if (SUCCEEDED(hr)) 22: { 23: // Create an array for the list of fields in 24: // the Products table. 25: COleSafeArray vaFieldlist; 26: vaFieldlist.CreateOneDim(VT_VARIANT,3); 27: // Fill in the field names now. 28: long lArrayIndex[1]; 29: lArrayIndex[0] = 0; 30: vaFieldlist.PutElement(lArrayIndex, 31: &(_variant_t(ÒPartNumber"))); 32: lArrayIndex[0] = 1; 33: vaFieldlist.PutElement(lArrayIndex, 34: &(_variant_t("ProductName"))); 35: lArrayIndex[0] = 2; 36: vaFieldlist.PutElement(lArrayIndex, 37: &(_variant_t("Price"))); 38: 39: // Create an array for the list of values to go in 40: // the Products table. 41: COleSafeArray vavaluelist; 42: vavaluelist.CreateOneDim(VT_VARIANT,3); 43: // Fill in the values for each field. 44: lArrayIndex[0] = 0; 45: vavaluelist.PutElement(lArrayIndex, 46: &(_variant_t("8TRACK-003"))); 47: lArrayIndex[0] = 1; 48: vavaluelist.PutElement(lArrayIndex, 49: &(_variant_t("Bell Bottom Hits"))); 50: lArrayIndex[0] = 2; 51: vavaluelist.PutElement(lArrayIndex, 52: &(_variant_t((float)19.95))); 53: 54: pRecordSet->AddNew(vaFieldlist, vavaluelist); 55: pRecordSet->Close(); 56: } 57: } 58: } 59: catch( _com_error &e ) 60: { 61: TRACE( "Error:%08lx.\\n", e.Error()); 62: TRACE( "ErrorMessage:%s.\\n", e.ErrorMessage()); 63: TRACE( "Source:%s.\\n", (LPCTSTR) _bstr_t(e.Source())); 64: TRACE( "Description:%s.\\n", (LPCTSTR) _bstr_t(e.Description())); 65: } 66: catch(...) 67: { 68: TRACE( "\\n*** Unhandled Exception ***\\n" ); 69: } 70: } (jacky) |