To comment on the following update, log in, then open the issue: http://www.openoffice.org/issues/show_bug.cgi?id=52509 Issue #:|52509 Summary:|Problem with setting date through automation Component:|api Version:|OOo 1.1.4 Platform:|All URL:| OS/Version:|Windows 2000 Status:|UNCONFIRMED Status whiteboard:| Keywords:| Resolution:| Issue type:|DEFECT Priority:|P3 Subcomponent:|code Assigned to:|sw Reported by:|bovlk
------- Additional comments from [EMAIL PROTECTED] Tue Jul 26 14:32:50 -0700 2005 ------- Fourth, I tried to automatically create StarCalc documents with the following C-code in Visual C++ 6 Code: static HRESULT AutoWrap(int autoType, VARIANT *pvResult, IDispatch *pDisp, LPOLESTR ptName, int cArgs, ...) { // This code was copied from http://www.oooforum.org/forum/viewtopic.phtml?t=9815 // with only minor changes /* Variables used... */ va_list marker; DISPPARAMS dp = { NULL, NULL, 0, 0 }; DISPID dispidNamed = DISPID_PROPERTYPUT; DISPID dispID; HRESULT hr; char szName[200]; /* Allocate memory for arguments, should be on the safe-side with mul 100 */ VARIANT *pArgs = (VARIANT *)malloc(sizeof(VARIANT) * 100); int i = 0; va_start(marker, cArgs); if(!pDisp) return -1; /* Convert down to ANSI */ WideCharToMultiByte(CP_ACP, 0, ptName, -1, szName, 256, NULL, NULL); /* Get DISPID for name passed... */ pDisp->GetIDsOfNames(IID_NULL, &ptName, 1, LOCALE_USER_DEFAULT, &dispID); /* Extract arguments... */ for(i=0; i<cArgs; i++) pArgs[i] = va_arg(marker, VARIANT); /* Build DISPPARAMS */ dp.cArgs = cArgs; dp.rgvarg = pArgs; /* Handle special-case for property-puts! */ if(autoType & DISPATCH_PROPERTYPUT) { dp.cNamedArgs = 1; dp.rgdispidNamedArgs = &dispidNamed; } /* Make the call! */ hr = pDisp->Invoke(dispID, IID_NULL, LOCALE_SYSTEM_DEFAULT, autoType, &dp, pvResult, NULL, NULL); // char buffer[256]; // FormatMessage( FORMAT_MESSAGE_FROM_SYSTEM, 0, hr, 0, buffer, sizeof(buffer), 0); // MessageBox( 0, buffer, "Bla", MB_OK); if(FAILED(hr)) return hr; va_end(marker); free(pArgs); return hr; } // This is a function for statements // of the type "Set cell name XXXX to YYYY" // in which we want to ignore errors // Possibly, it will show debug messages void IGNORE_COM_ERRORS( IDispatch *pSheet, const TCHAR *name, VARIANT value) { if (!pSheet || !name) return; IDispatch *pCell; VARIANT result; VARIANT parm[1]; HRESULT h1; VariantInit(&parm[0]); parm[0].vt = VT_BSTR | VT_BYREF; _bstr_t cbs = name; BSTR bs = SysAllocString(cbs); parm[0].pbstrVal = &bs; h1=AutoWrap(DISPATCH_METHOD, &result, pSheet, L"getCellRangeByName", 1, parm[0]); pCell = result.pdispVal; VariantClear( &parm[0]); if (pCell && SUCCEEDED(h1)) if (SUCCEEDED(AutoWrap(DISPATCH_METHOD, &result, pCell, L"setFormula", 1, value))) return; if (bDebugTemplate) { CString s; s.Format( cLanguageInfo->pLang->msgDebug, name); MessageBox( 0, s, cLanguageInfo->pLang->msgDebugCaption, MB_OK | MB_ICONINFORMATION); } } void IGNORE_COM_ERRORS( IDispatch *pSheet, const TCHAR *name, DATE value) { VARIANT val; VariantInit( &val); val.vt = VT_DATE | VT_BYREF; val.pdate = &value; IGNORE_COM_ERRORS( pSheet, name, val); } main( ) { COleDateTime dt1( trans->when); COleDateTime dt2( 2005, 8, 3, 0, 0, 0); IGNORE_COM_ERRORS( pSheet, _T("DateIssue"), (DATE)dt2); } Well, this results in the month and day being swapped, ie. OOO reporst March 8th, 2005 instead of August 3rd, 2005. --------------------------------------------------------------------- Please do not reply to this automatically generated notification from Issue Tracker. Please log onto the website and enter your comments. http://qa.openoffice.org/issue_handling/project_issues.html#notification --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]