hi,
i do read Appointment from Outlook Calendar.
this work fine except Date/Time like this:
*** Code ***
oOutlook := CreateObject( "Outlook.Application" )
IF Empty(oOutLook)
RETURN
ENDIF
oNameSpace := oOutlook:GetNamespace( "MAPI" )
oAppointment := oNameSpace:getDefaultFolder( olFolderCalendar ):Items
cFilter := "[Start] >= '"+ cStart + "' and [Start] <= '"+ cEnd +"'"
currentAppointment := oAppointment:Restrict(cFilter)
iMax := currentAppointment:count()
bSaveError := ErrorBlock( {|oError| MyErrorHandler(oError) })
FOR i := 1 TO iMax
oItem := currentAppointment:item(i)
APPEND BLANK
BEGIN SEQUENCE
#IFDEF __XPP__
cStringStart := oItem:treatDateAsString( .T. ):getProperty(
"Start")
//
// GERMAN Notation
//
cDateStart := SUBSTR( cStringStart, 1, 8 ) // YYYYMMDDHHMMSS
cTimeStart := SUBSTR( cStringStart, 9, 2 ) + ":" + SUBSTR(
cString
REPLACE CALENDAR->STARTDATE WITH STOD(cDateStart )
REPLACE CALENDAR->STARTTIME WITH cTimeStart
#ELSE
LogMe("1 Start")
cStringStart := oItem:getProperty( "Start") // -> FAIL
// never reach here
LogMe("2 Start"+cStringStart)
....
#ENDIF
nHit++
RECOVER USING oError
nMiss++
cStringStart := ""
LogMe("0 Start FAIL")
END SEQUENCE
*** Eof ***
with Xbase++ i use oItem:treatDateAsString( .T. ):getProperty( "Start") to
get YYYYMMDDHHMMSS String.
how to do it with harbour ?
greetings by OHR
Jimmy
|
|
0
|
|
|
|
Reply
|
AUGE_OHR
|
2/28/2011 6:28:59 PM |
|
use same code for both xbase++ and xharbour
Regards
Luiz
On 28 fev, 15:28, "AUGE_OHR" <AUGE_OHR*NOS...@WEB.DE> wrote:
> hi,
>
> i do read Appointment from Outlook Calendar.
> this work fine except Date/Time like this:
>
> *** Code ***
> =A0 =A0oOutlook :=3D CreateObject( "Outlook.Application" )
> =A0 =A0IF Empty(oOutLook)
> =A0 =A0 =A0 RETURN
> =A0 =A0ENDIF
>
> =A0 =A0oNameSpace =A0 :=3D oOutlook:GetNamespace( "MAPI" )
> =A0 =A0oAppointment :=3D oNameSpace:getDefaultFolder( olFolderCalendar ):=
Items
>
> =A0 =A0cFilter =A0 =A0 =A0:=3D "[Start] >=3D '"+ cStart + "' and [Start] =
<=3D '"+ cEnd +"'"
> =A0 =A0currentAppointment :=3D oAppointment:Restrict(cFilter)
> =A0 =A0iMax :=3D currentAppointment:count()
>
> =A0 =A0bSaveError =A0:=3D ErrorBlock( {|oError| MyErrorHandler(oError) })
>
> =A0 =A0FOR i :=3D 1 TO iMax
> =A0 =A0 =A0 =A0oItem =A0 :=3D currentAppointment:item(i)
>
> =A0 =A0 =A0 APPEND BLANK
> =A0 =A0 =A0 BEGIN SEQUENCE
>
> #IFDEF __XPP__
> =A0 =A0 =A0 =A0 =A0cStringStart :=3D oItem:treatDateAsString( .T. ):getPr=
operty(
> "Start")
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0// GERMAN Notation
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0cDateStart =A0 :=3D SUBSTR( cStringStart, 1, 8 ) =A0//=
YYYYMMDDHHMMSS
> =A0 =A0 =A0 =A0 =A0cTimeStart =A0 :=3D SUBSTR( cStringStart, 9, 2 ) + ":"=
+ SUBSTR(
> cString
>
> =A0 =A0 =A0 =A0 =A0REPLACE CALENDAR->STARTDATE =A0 WITH STOD(cDateStart )
> =A0 =A0 =A0 =A0 =A0REPLACE CALENDAR->STARTTIME =A0 WITH cTimeStart
>
> #ELSE
> =A0 =A0 =A0 =A0 =A0LogMe("1 Start")
> =A0 =A0 =A0 =A0 =A0cStringStart :=3D oItem:getProperty( "Start") =A0 =A0/=
/ -> FAIL
>
> =A0 =A0 =A0 =A0 =A0// never reach here
> =A0 =A0 =A0 =A0 =A0LogMe("2 Start"+cStringStart)
> ...
> #ENDIF
> =A0 =A0 =A0 =A0 =A0nHit++
>
> =A0 =A0 =A0 RECOVER USING oError
> =A0 =A0 =A0 =A0 =A0nMiss++
> =A0 =A0 =A0 =A0 =A0cStringStart :=3D ""
> =A0 =A0 =A0 =A0 =A0LogMe("0 Start =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0=
=A0FAIL")
> =A0 =A0 =A0 END SEQUENCE
>
> *** Eof ***
> with Xbase++ i use oItem:treatDateAsString( .T. ):getProperty( "Start") t=
o
> get YYYYMMDDHHMMSS String.
>
> how to do it with harbour ?
>
> greetings by OHR
> Jimmy
|
|
0
|
|
|
|
Reply
|
culikr
|
2/28/2011 7:43:36 PM
|
|
This is a multi-part message in MIME format.
------=_NextPart_000_0030_01CBD796.155FB090
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
hi,
>use same code for both xbase++ and xharbour
thx for Answer, but=20
cStringStart :=3D oItem:treatDateAsString( .T. ):getProperty( =
"CreationTime")
still does not work with my harbour Version ( very old .. 0.9x )
greetings by OHR
Jimmy
------=_NextPart_000_0030_01CBD796.155FB090
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type content=3D"text/html; =
charset=3Diso-8859-1">
<META content=3D"MSHTML 6.00.2900.6036" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY>
<DIV><FONT size=3D2>hi,</FONT></DIV>
<DIV><FONT size=3D2></FONT> </DIV>
<DIV><FONT size=3D2>>use same code for both xbase++ and =
xharbour</FONT></DIV>
<DIV><FONT size=3D2></FONT> </DIV>
<DIV><FONT size=3D2>thx for Answer, but </FONT></DIV>
<DIV><FONT size=3D2>cStringStart :=3D oItem<STRONG>:treatDateAsString( =
..T.=20
)</STRONG>:getProperty( "CreationTime")</FONT></DIV>
<DIV><FONT size=3D2>still does not work with my harbour Version ( very =
old .. 0.9x=20
)</FONT></DIV>
<DIV><BR><FONT size=3D2>greetings by =
OHR<BR>Jimmy<BR></FONT></DIV></BODY></HTML>
------=_NextPart_000_0030_01CBD796.155FB090--
|
|
0
|
|
|
|
Reply
|
AUGE_OHR
|
2/28/2011 9:23:11 PM
|
|
hi,
>use same code for both xbase++ and xharbour
i have update harbour to v2.x but now it tell me "hb_itemGetDD" is wrong
HB_FUNC( DATEASLONG )
{
PHB_ITEM pDate = hb_param( 1, HB_IT_DATE );
if( pDate )
hb_retnl( hb_itemGetDL( pDate ) );
else
hb_retnl( 0 );
}
HB_FUNC( DATEASDOUBLE )
{
PHB_ITEM pDate = hb_param( 1, HB_IT_DATE );
if( pDate )
hb_retnd( hb_itemGetDD( pDate ) );
else
hb_retnd( 0 );
}
can someone help me please
greetings by OHR
Jimmy
|
|
0
|
|
|
|
Reply
|
AUGE_OHR
|
3/1/2011 10:47:05 PM
|
|
On Tue, 1 Mar 2011 23:47:05 +0100, "AUGE_OHR" <AUGE_OHR*NOSPAM@WEB.DE>
wrote:
>hi,
>
>>use same code for both xbase++ and xharbour
>
>i have update harbour to v2.x but now it tell me "hb_itemGetDD" is wrong
>
> HB_FUNC( DATEASLONG )
> {
> PHB_ITEM pDate = hb_param( 1, HB_IT_DATE );
>
> if( pDate )
> hb_retnl( hb_itemGetDL( pDate ) );
> else
> hb_retnl( 0 );
> }
>
> HB_FUNC( DATEASDOUBLE )
> {
> PHB_ITEM pDate = hb_param( 1, HB_IT_DATE );
>
> if( pDate )
> hb_retnd( hb_itemGetDD( pDate ) );
> else
> hb_retnd( 0 );
> }
>
>can someone help me please
>
>greetings by OHR
>Jimmy
>
Hi,
I'm not sure if this will work:
HB_FUNC( DATEASDOUBLE )
{
PHB_ITEM pDate = hb_param( 1, HB_IT_DATE );
if( pDate )
hb_retnd( ( double ) hb_itemGetDL( pDate ) );
else
hb_retnd( 0 );
}
Andi
|
|
0
|
|
|
|
Reply
|
xharbour_delete
|
3/1/2011 11:12:04 PM
|
|
On Mon, 28 Feb 2011 19:28:59 +0100, "AUGE_OHR"
<AUGE_OHR*NOSPAM@WEB.DE> wrote:
>*** Eof ***
>with Xbase++ i use oItem:treatDateAsString( .T. ):getProperty( "Start") to
>get YYYYMMDDHHMMSS String.
>
>how to do it with harbour ?
>
>greetings by OHR
>Jimmy
Can you try the following:
-----8<-----
proc main()
? DATETIMESTR()
#pragma begindump
#include "hbapi.h"
#include "hbapiitm.h"
#include "hbdate.h"
HB_FUNC( DATETIMESTR )
{
PHB_ITEM pTemp = hb_itemNew( NULL );
int iYear, iMonth, iDay;
char szDateTime[18];
char szDate[9];
char szTime[9];
char szTmp[9];
int i, u = 0;
*szDateTime = 0;
hb_dateTimeStr( szTime );
hb_dateToday( &iYear, &iMonth, &iDay );
hb_itemPutD( pTemp, iYear, iMonth, iDay );
hb_dateDecStr( szDate, hb_itemGetDL( pTemp ) );
for( i = 0; i < 8; i++ )
{
if (!( szTime[ i ] == ':' ))
szTmp[ u++ ] = szTime[ i ];
}
szTmp[ u ] = 0;
hb_xstrcat( szDateTime, szDate, szTmp, 0 );
hb_retc( szDateTime );
hb_itemRelease( pTemp );
}
#pragma enddump
-----8<-----
Andi
|
|
0
|
|
|
|
Reply
|
xharbour_delete
|
3/2/2011 12:09:12 AM
|
|
hi,
please ignore both Function of lates Msg ... they are not need
i have strip down Code to "clean" harbour.
please compile/link it ( i use BCC55 ) Sample so you can "see" my Problem
i have upgrade to harbour v2.x and my Environment to
Path=C:\hrb_dev\bcc55\bin;C:\HB2\BIN;C:\WINDOWS\system32;C:\WINDOWS;
SET INCLUDE=C:\hrb_dev\bcc55\Include;C:\HB2\INCLUDE
SET LIB=C:\hrb_dev\bcc55\Lib;C:\HB2\LIB
C:
cd C:\hrb_dev\xmate
start C:\hrb_dev\xmate\xMate.Exe
and also in xMate config.
it does start fine but DateTime Field are still empty
can someone help me please
greetings by OHR
Jimmy
*** Code ***
#include "inkey.ch"
#include "common.ch"
#DEFINE olFolderCalendar 9
REQUEST DbfCdx
PROCEDURE MAIN
LOCAL cAppPath := LEFT(APPNAME(.t.),LEN(APPNAME(.t.))-LEN(APPNAME(.f.)))
LOCAL zDBF := cAppPath + "CALENDAR.DBF"
LOCAL cStart
LOCAL cEnd
LOCAL nMax := 25 // MAXROW()
LOCAL nCol := 80 // MAXCOL()
LOCAL Getlist := {}
SET EPOCH TO YEAR( DATE() ) - 50
SET DATE GERMAN
cStart := DTOC(DATE()-7) // +" 0:01 AM"
cEnd := DTOC(DATE()) // +" 0:01 AM"
SELECT 1
//
// create DBF
//
IF !FILE( zDBF )
CRE_CALENDAR( zDBF )
ENDIF
//
// create Index
//
IF !FILE( STRTRAN(zDBF,".DBF",".CDX") )
CRE_INDEX(zDBF)
ENDIF
USE ( zDBF ) VIA "DBFCDX" EXCLUSIVE
SET INDEX TO (STRTRAN(zDBF,".DBF",".CDX"))
OrdSetFocus(0)
ZAP
CLS
@ (nMax/2)-1,(nCol/2) SAY "Show from "
@ (nMax/2) ,(nCol/2) SAY "Start Date" GET cStart
@ (nMax/2)+1,(nCol/2) SAY "End Date" GET cEnd
READ
CLEAR GETS
// log it to File
SET ALTER TO DATETIME.TXT
// start Import
Fillit(cStart,cEnd)
SET ALTER TO
GO TOP
Browse()
RETURN
PROCEDURE Fillit(cStart,cEnd)
LOCAL oOutlook
LOCAL oNameSpace
LOCAL oAppointment
LOCAL currentAppointment
LOCAL i,iMax
LOCAL oItem
LOCAL cStringStart
LOCAL cDateStart
LOCAL cTimeStart
LOCAL nRMBS
LOCAL bSaveError
LOCAL oError
LOCAL nMax := MAXROW()
LOCAL nCol := MAXCOL()
LOCAL cFilter
LOCAL cMax
LOCAL aDateSec
LOCAL nTimeStart
LOCAL nEndStart
LOCAL cText
LOCAL nHit := 0
LOCAL nMiss := 0
oOutlook := CreateObject( "Outlook.Application" )
IF Empty(oOutLook)
RETURN
ENDIF
oNameSpace := oOutlook:GetNamespace( "MAPI" )
cFilter := "[Start] >= '"+ cStart + "' and [Start] <= '"+ cEnd +"'"
oAppointment := oNameSpace:getDefaultFolder( olFolderCalendar ):Items
#IFDEF USEFIND
currentAppointment := oAppointment:Find(cFilter)
#ELSE
currentAppointment := oAppointment:Restrict(cFilter)
#ENDIF
iMax := currentAppointment:count()
cMax := LTRIM(STR(iMax))
nTimeStart := SECONDS()
bSaveError := ErrorBlock( {|oError| MyErrorHandler(oError) })
#IFDEF USEFIND
i = 0
DO While NIL <> currentAppointment
oItem := currentAppointment
i++
#ELSE
FOR i := 1 TO iMax
oItem := currentAppointment:item(i)
#ENDIF
APPEND BLANK
//
// will work
//
BEGIN SEQUENCE
LogMe("1 Start")
cStringStart := oItem:treatDateAsString(.T.):getProperty("Start")
LogMe("2 Start"+cStringStart)
//
// GERMAN Notation
//
cDateStart := SUBSTR( cStringStart, 1, 8 ) // YYYYMMDDHHMMSS
cTimeStart := SUBSTR( cStringStart, 9, 2 )+":"+;
SUBSTR(cStringStart, 11, 2 ) + ":" +;
SUBSTR( cStringStart, 13, 2 )
REPLACE CALENDAR->STARTDATE WITH STOD(cDateStart )
REPLACE CALENDAR->STARTTIME WITH cTimeStart
nHit++
RECOVER USING oError
nMiss++
cStringStart := ""
LogMe("0 Start FAIL")
END SEQUENCE
@ nMax,nCol/3 SAY cMax+"/"+STR(i)+" "+cStringStart
BEGIN SEQUENCE
//
// MUST !!!
//
LogMe("1 CreationTime")
cStringStart :=
oItem:treatDateAsString(.T.):getProperty("CreationTime")
LogMe("2 CreationTime"+cStringStart)
REPLACE CALENDAR->CREDATE WITH cStringStart
nHit++
RECOVER USING oError
nMiss++
LogMe("0 CreationTime FAIL")
END SEQUENCE
BEGIN SEQUENCE
//
// MUST !!!
LogMe("1 LastModificationTime")
cStringStart :=
oItem:treatDateAsString(.T.):getProperty("LastModificationTime")
LogMe("2 LastModificationTime"+cStringStart)
REPLACE CALENDAR->LASTDATE WITH cStringStart
nHit++
RECOVER USING oError
nMiss++
LogMe("0 LastModificationTime FAIL")
END SEQUENCE
BEGIN SEQUENCE
//
// ok
//
REPLACE CALENDAR->SUBJECT WITH oItem:getProperty( "Subject")
nHit++
RECOVER USING oError
nMiss++
LogMe("0 Subject FAIL")
END SEQUENCE
BEGIN SEQUENCE
//
// ok, nur wenn Eintrag ;)
//
REPLACE CALENDAR->LOCATION WITH oItem:getProperty( "Location")
nHit++
RECOVER USING oError
nMiss++
LogMe("0 Location FAIL")
END SEQUENCE
BEGIN SEQUENCE
//
// ok, nur wenn Eintrag ;)
//
REPLACE CALENDAR->LABELCOLOR WITH oItem:Categories
nHit++
RECOVER USING oError
nMiss++
LogMe("0 Categories FAIL")
END SEQUENCE
BEGIN SEQUENCE
//
// ok, nur wenn Eintrag ;)
//
REPLACE CALENDAR->MEMOTEXT WITH oItem:getProperty( "Body")
nHit++
RECOVER USING oError
nMiss++
LogMe("0 Body FAIL")
END SEQUENCE
BEGIN SEQUENCE
//
// ok
//
REPLACE CALENDAR->Duration WITH oItem:getProperty( "Duration")
nHit++
RECOVER USING oError
nMiss++
LogMe("0 Duration FAIL")
END SEQUENCE
BEGIN SEQUENCE
//
// ok, nur wenn Eintrag ;)
//
REPLACE CALENDAR->ALLDAY WITH oItem:getProperty("AllDayEvent")
nHit++
RECOVER USING oError
nMiss++
LogMe("0 AllDayEvent FAIL")
END SEQUENCE
BEGIN SEQUENCE
//
// auch z.b. Geburtstag 1956 !!!
//
REPLACE CALENDAR->RECURREN WITH oItem:RecurrenceState
nHit++
RECOVER USING oError
nMiss++
LogMe("0 RecurrenceState FAIL")
END SEQUENCE
BEGIN SEQUENCE
//
// fast immer default Wert
//
nRMBS := oItem:getProperty( "ReminderMinutesBeforeStart")
//
// hm ... �berlauf ...
//
IF nRMBS > 999
nRMBS := 999
ENDIF
REPLACE CALENDAR->WARNTIME WITH nRMBS
nHit++
RECOVER USING oError
nMiss++
LogMe("0 ReminderMinutesBeforeStart FAIL")
END SEQUENCE
//
// hm ... works
//
BEGIN SEQUENCE
//
// numerisch weil OUTLOOK.CH Konstante
//
REPLACE CALENDAR->BUSYSTAT WITH oItem:getProperty( "BusyStatus")
nHit++
RECOVER USING oError
nMiss++
LogMe("0 BusyStatus FAIL")
END SEQUENCE
BEGIN SEQUENCE
//
// numerisch weil OUTLOOK.CH Konstante
//
REPLACE CALENDAR->IMPORTAN WITH oItem:getProperty( "Importance")
nHit++
RECOVER USING oError
nMiss++
LogMe("0 Importance FAIL")
END SEQUENCE
BEGIN SEQUENCE
//
// numerisch weil OUTLOOK.CH Konstante
//
REPLACE CALENDAR->REMINDER WITH oItem:getProperty("ReminderSet")
nHit++
RECOVER USING oError
nMiss++
LogMe("0 ReminderSet FAIL")
END SEQUENCE
BEGIN SEQUENCE
//
// ok
//
REPLACE CALENDAR->MEETING WITH oItem:MeetingStatus
nHit++
RECOVER USING oError
nMiss++
LogMe("0 MeetingStatus FAIL")
END SEQUENCE
BEGIN SEQUENCE
//
// hm ...
//
REPLACE CALENDAR->PRIVATE WITH oItem:Sensitivity
nHit++
RECOVER USING oError
nMiss++
LogMe("0 Sensitivity FAIL")
END SEQUENCE
#IFDEF USEFIND
currentAppointment := oAppointment:FindNext
ENDDO
#ELSE
NEXT
#ENDIF
CLS
? ""
? ""
nEndStart := SECONDS()
SET DECIMALS TO 4
#IFDEF USEFIND
? cText := STR(nEndStart-nTimeStart)+" Sec. for "+LTRIM(STR(iMax))+"
Records"
LogMe(cText)
IF iMax > 0
? cText := STR((nEndStart-nTimeStart)/iMax)+" Records per Sec."
LogMe(cText)
? cText := STR((nEndStart-nTimeStart)/nHit)+" Sec. per activeX Calls"
LogMe(cText)
? cText := STR(nMiss)+" ActiveX Calls fail"
LogMe(cText)
ENDIF
#ELSE
? cText := STR(nEndStart-nTimeStart)+" Sec. for "+LTRIM(STR(i))+"
Records"
LogMe(cText)
IF i > 0
? cText := STR((nEndStart-nTimeStart)/i)+" Records per Sec."
LogMe(cText)
? cText := STR((nEndStart-nTimeStart)/nHit)+" Sec. per ActiveX Calls"
LogMe(cText)
? cText := STR(nMiss)+" ActiveX Calls fail"
LogMe(cText)
ENDIF
#ENDIF
? ""
? ""
? ""
BEGIN SEQUENCE
oOutlook := NIL
RECOVER USING oError
END SEQUENCE
ErrorBlock( bSaveError )
RETURN
FUNCTION MyErrorHandler() // Fehler-Routine
BREAK
RETURN .F.
STATIC FUNCTION CRE_CALENDAR( datei, alias, id )
LOCAL p, field_list := {}
IF VALTYPE( datei ) != "C"
datei := "CALENDAR.DBF"
ENDIF
IF VALTYPE( alias ) != "C"
p := AT( ".", datei )
alias := IF( p > 0, SUBSTR( datei, 1, p - 1 ), datei )
ENDIF
IF VALTYPE( id ) != "N"
id := 0
ENDIF
SELECT( id )
IF !FILE( datei )
AADD( field_list, { "EVENTID" , "N", 7, 0 } ) // 9.999.999 Item
enough ?
AADD( field_list, { "CREDATE" , "C", 14, 0 } ) // YYYYMMDDHHMMSS
AADD( field_list, { "LASTDATE" , "C", 14, 0 } )
AADD( field_list, { "SUBJECT" , "C", 100, 0 } )
AADD( field_list, { "LOCATION" , "C", 100, 0 } )
AADD( field_list, { "STARTDATE" , "D", 8, 0 } )
AADD( field_list, { "STARTTIME" , "C", 8, 0 } )
* AADD( field_list, { "ENDDATE" , "D", 8, 0 } )
* AADD( field_list, { "ENDTIME" , "C", 8, 0 } )
AADD( field_list, { "DURATION" , "N", 5, 0 } )
AADD( field_list, { "ALLDAY" , "L", 1, 0 } )
AADD( field_list, { "LABELCOLOR" , "C", 20, 0 } )
* aadd( field_list, { "LABELTEXT" , "C", 30, 0 } )
AADD( field_list, { "PRIVATE" , "N", 3, 0 } )
AADD( field_list, { "MEETING" , "N", 3, 0 } )
AADD( field_list, { "REMINDER" , "L", 1, 0 } )
AADD( field_list, { "WARNTIME" , "N", 3, 0 } )
* AADD( field_list, { "REMINDTIME" , "C", 14, 0 } )
* AADD( field_list, { "SCHEDULE" , "N", 3, 0 } )
* aadd( field_list, { "SHOWTIMEAS" , "C", 30, 0 } )
AADD( field_list, { "IMPORTAN" , "N", 3, 0 } )
AADD( field_list, { "BUSYSTAT" , "N", 3, 0 } )
AADD( field_list, { "RECURREN" , "N", 3, 0 } ) // RecurrenceState
only
//
// just for mark Record as deleted
//
AADD( field_list, { "MARKDEL" , "L", 1, 0 } ) // is Record
deleted
//
// Memofields
//
AADD( field_list, { "MEMOTEXT" , "M", 10, 0 } )
* AADD( field_list, { "MAKEUP" , "M", 10, 0 } ) // XML MarkUp
#IFDEF __XPP__
DBCREATE( datei, field_list, "FOXCDX")
#ELSE
DBCREATE( datei, field_list, "DBFCDX" )
#ENDIF
ENDIF
RETURN .T.
STATIC FUNCTION CRE_INDEX(zDBF)
LOCAL _tagname
LOCAL _keyfeld
LOCAL _cdxname
_cdxname := STRTRAN(zDBF,".DBF",".CDX")
*# SNAPCODE USE CALENDAR.DBF
USE (zDBF) VIA "DBFCDX" EXCLUSIVE
//
// index on EVENTID
//
_tagname := "ID"
_KEYFELD := "EVENTID"
ORDCREATE(_cdxname,_tagname,_keyfeld)
CLOSE INDEX
_tagname := "STARTDATE"
_KEYFELD := "DTOS( Startdate ) + STRTRAN( Starttime, ':', '' )"
ORDCREATE(_cdxname,_tagname,_keyfeld)
CLOSE INDEX
_tagname := "SUBJECT"
_KEYFELD := "SUBJECT"
ORDCREATE(_cdxname,_tagname,_keyfeld)
CLOSE INDEX
//
// index on "markdel" Flag to "recycle" Records
//
_tagname := "MARKDEL"
_KEYFELD := "IF( MARKDEL = .T., 'Y', 'N' )"
ORDCREATE(_cdxname,_tagname,_keyfeld)
CLOSE INDEX
CLOSE
RETURN ( .t. )
STATIC FUNCTION LogMe(cText)
SET ALTER ON
SET CONSOLE OFF
? DATE(),TIME(),cText
SET CONSOLE ON
SET ALTER OFF
RETURN nil
FUNCTION HB_GTSYS()
REQUEST HB_GT_WVG_DEFAULT
REQUEST HB_GT_WVT
REQUEST HB_GT_WGU
RETURN NIL
STATIC FUNCTION AppName( lWithPath )
LOCAL n
LOCAL cName := hb_argV( 0 )
//
DEFAULT lWithPath TO .f.
//
IF !( lWithPath )
IF ( n := rat( '\', cName ) ) > 0
cName := substr( cName, n+1 )
ENDIF
ENDIF
//
RETURN cName
STATIC FUNCTION MsgBox( cMessage, cTitle )
RETURN Win_MessageBox( , cMessage, cTitle )
STATIC FUNCTION AltD()
RETURN nil
*
*
*
*** Eof ***
|
|
0
|
|
|
|
Reply
|
AUGE_OHR
|
3/2/2011 3:11:53 AM
|
|
First
install xharbour from http://free.xharbour.com
use xbuild to compile your app.
Regards
Luiz
On 2 mar, 00:11, "AUGE_OHR" <AUGE_OHR*NOS...@WEB.DE> wrote:
> hi,
>
> please ignore both Function of lates Msg ... they are not need
>
> i have strip down Code to "clean" harbour.
> please compile/link it ( i use BCC55 ) Sample so you can "see" my Problem
>
> i have upgrade to harbour v2.x and my Environment to
>
> Path=3DC:\hrb_dev\bcc55\bin;C:\HB2\BIN;C:\WINDOWS\system32;C:\WINDOWS;
> SET INCLUDE=3DC:\hrb_dev\bcc55\Include;C:\HB2\INCLUDE
> SET LIB=3DC:\hrb_dev\bcc55\Lib;C:\HB2\LIB
> C:
> cd C:\hrb_dev\xmate
> start C:\hrb_dev\xmate\xMate.Exe
>
> and also in xMate config.
> it does start fine but DateTime Field are still empty
>
> can someone help me please
>
> greetings by OHR
> Jimmy
>
> *** Code ***
> #include =A0 =A0 =A0"inkey.ch"
> #include =A0 =A0 "common.ch"
>
> #DEFINE olFolderCalendar =A09
>
> REQUEST DbfCdx
>
> PROCEDURE MAIN
> LOCAL cAppPath =A0:=3D LEFT(APPNAME(.t.),LEN(APPNAME(.t.))-LEN(APPNAME(.f=
..)))
> LOCAL zDBF =A0 =A0 =A0:=3D cAppPath + "CALENDAR.DBF"
> LOCAL cStart
> LOCAL cEnd
> LOCAL nMax :=3D 25 // MAXROW()
> LOCAL nCol :=3D 80 // MAXCOL()
> LOCAL Getlist :=3D {}
>
> =A0 =A0SET EPOCH TO YEAR( DATE() ) - 50
> =A0 =A0SET DATE GERMAN
>
> =A0 =A0cStart =A0 =A0 :=3D DTOC(DATE()-7) // +" 0:01 AM"
> =A0 =A0cEnd =A0 =A0 =A0 :=3D DTOC(DATE()) =A0 // +" 0:01 AM"
>
> =A0 =A0SELECT 1
> =A0 =A0//
> =A0 =A0// create DBF
> =A0 =A0//
> =A0 =A0IF !FILE( zDBF )
> =A0 =A0 =A0 CRE_CALENDAR( zDBF )
> =A0 =A0ENDIF
> =A0 =A0//
> =A0 =A0// create Index
> =A0 =A0//
> =A0 =A0IF !FILE( STRTRAN(zDBF,".DBF",".CDX") )
> =A0 =A0 =A0 CRE_INDEX(zDBF)
> =A0 =A0ENDIF
>
> =A0 =A0USE ( zDBF ) =A0VIA "DBFCDX" EXCLUSIVE
> =A0 =A0SET INDEX TO (STRTRAN(zDBF,".DBF",".CDX"))
> =A0 =A0OrdSetFocus(0)
> =A0 =A0ZAP
>
> =A0 =A0CLS
> =A0 =A0@ (nMax/2)-1,(nCol/2) SAY "Show from "
> =A0 =A0@ (nMax/2) =A0,(nCol/2) SAY "Start Date" GET cStart
> =A0 =A0@ (nMax/2)+1,(nCol/2) SAY "End =A0 Date" GET cEnd
>
> =A0 =A0READ
> =A0 =A0CLEAR GETS
>
> =A0 =A0// log it to File
> =A0 =A0SET ALTER TO DATETIME.TXT
> =A0 =A0// start Import
> =A0 =A0Fillit(cStart,cEnd)
> =A0 =A0SET ALTER TO
>
> =A0 =A0GO TOP
> =A0 =A0Browse()
>
> RETURN
>
> PROCEDURE Fillit(cStart,cEnd)
> LOCAL oOutlook
> LOCAL oNameSpace
> LOCAL oAppointment
> LOCAL currentAppointment
> LOCAL i,iMax
> LOCAL oItem
> LOCAL cStringStart
> LOCAL cDateStart
> LOCAL cTimeStart
> LOCAL nRMBS
> LOCAL bSaveError
> LOCAL oError
> LOCAL nMax :=3D MAXROW()
> LOCAL nCol :=3D MAXCOL()
> LOCAL cFilter
> LOCAL cMax
> LOCAL aDateSec
> LOCAL nTimeStart
> LOCAL nEndStart
> LOCAL cText
> LOCAL nHit =A0:=3D 0
> LOCAL nMiss :=3D 0
>
> =A0 =A0oOutlook :=3D CreateObject( "Outlook.Application" )
> =A0 =A0IF Empty(oOutLook)
> =A0 =A0 =A0 RETURN
> =A0 =A0ENDIF
>
> =A0 =A0oNameSpace =A0 :=3D oOutlook:GetNamespace( "MAPI" )
>
> =A0 =A0cFilter =A0 =A0 =A0:=3D "[Start] >=3D '"+ cStart + "' and [Start] =
<=3D '"+ cEnd +"'"
> =A0 =A0oAppointment :=3D oNameSpace:getDefaultFolder( olFolderCalendar ):=
Items
>
> =A0 =A0#IFDEF USEFIND
> =A0 =A0 =A0 currentAppointment :=3D oAppointment:Find(cFilter)
> =A0 =A0#ELSE
> =A0 =A0 =A0 currentAppointment :=3D oAppointment:Restrict(cFilter)
> =A0 =A0#ENDIF
>
> =A0 =A0iMax :=3D currentAppointment:count()
> =A0 =A0cMax :=3D LTRIM(STR(iMax))
> =A0 =A0nTimeStart =A0:=3D SECONDS()
>
> =A0 =A0bSaveError =A0:=3D ErrorBlock( {|oError| MyErrorHandler(oError) })
>
> #IFDEF USEFIND
> =A0 =A0i =3D 0
> =A0 =A0DO While NIL <> currentAppointment
> =A0 =A0 =A0 =A0oItem =A0 :=3D currentAppointment
> =A0 =A0 =A0 =A0i++
> #ELSE
> =A0 =A0FOR i :=3D 1 TO iMax
> =A0 =A0 =A0 =A0oItem =A0 :=3D currentAppointment:item(i)
> #ENDIF
>
> =A0 =A0 =A0 APPEND BLANK
> =A0 =A0 =A0 //
> =A0 =A0 =A0 // will work
> =A0 =A0 =A0 //
> =A0 =A0 =A0 BEGIN SEQUENCE
> =A0 =A0 =A0 =A0 =A0LogMe("1 Start")
> =A0 =A0 =A0 =A0 =A0cStringStart :=3D oItem:treatDateAsString(.T.):getProp=
erty("Start")
> =A0 =A0 =A0 =A0 =A0LogMe("2 Start"+cStringStart)
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0// GERMAN Notation
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0cDateStart =A0 :=3D SUBSTR( cStringStart, 1, 8 ) =A0//=
YYYYMMDDHHMMSS
> =A0 =A0 =A0 =A0 =A0cTimeStart =A0 :=3D SUBSTR( cStringStart, 9, 2 )+":"+;
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0SU=
BSTR(cStringStart, 11, 2 ) + ":" +;
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0SU=
BSTR( cStringStart, 13, 2 )
>
> =A0 =A0 =A0 =A0 =A0REPLACE CALENDAR->STARTDATE =A0 WITH STOD(cDateStart )
> =A0 =A0 =A0 =A0 =A0REPLACE CALENDAR->STARTTIME =A0 WITH cTimeStart
>
> =A0 =A0 =A0 =A0 =A0nHit++
> =A0 =A0 =A0 RECOVER USING oError
> =A0 =A0 =A0 =A0 =A0nMiss++
> =A0 =A0 =A0 =A0 =A0cStringStart :=3D ""
> =A0 =A0 =A0 =A0 =A0LogMe("0 Start =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0=
=A0FAIL")
> =A0 =A0 =A0 END SEQUENCE
>
> =A0 =A0 =A0 @ nMax,nCol/3 SAY cMax+"/"+STR(i)+" "+cStringStart
>
> =A0 =A0 =A0 BEGIN SEQUENCE
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0// MUST !!!
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0LogMe("1 CreationTime")
> =A0 =A0 =A0 =A0 =A0cStringStart :=3D
> oItem:treatDateAsString(.T.):getProperty("CreationTime")
> =A0 =A0 =A0 =A0 =A0LogMe("2 CreationTime"+cStringStart)
> =A0 =A0 =A0 =A0 =A0REPLACE CALENDAR->CREDATE =A0 =A0 WITH cStringStart
>
> =A0 =A0 =A0 =A0 =A0nHit++
> =A0 =A0 =A0 RECOVER USING oError
> =A0 =A0 =A0 =A0 =A0nMiss++
> =A0 =A0 =A0 =A0 =A0LogMe("0 CreationTime =A0 =A0 =A0 =A0 =A0 =A0 =A0 FAIL=
")
> =A0 =A0 =A0 END SEQUENCE
>
> =A0 =A0 =A0 BEGIN SEQUENCE
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0// MUST !!!
> =A0 =A0 =A0 =A0 =A0LogMe("1 LastModificationTime")
> =A0 =A0 =A0 =A0 =A0cStringStart :=3D
> oItem:treatDateAsString(.T.):getProperty("LastModificationTime")
> =A0 =A0 =A0 =A0 =A0LogMe("2 LastModificationTime"+cStringStart)
> =A0 =A0 =A0 =A0 =A0REPLACE CALENDAR->LASTDATE =A0 =A0WITH cStringStart
>
> =A0 =A0 =A0 =A0 =A0nHit++
> =A0 =A0 =A0 RECOVER USING oError
> =A0 =A0 =A0 =A0 =A0nMiss++
> =A0 =A0 =A0 =A0 =A0LogMe("0 LastModificationTime =A0 =A0 =A0 FAIL")
> =A0 =A0 =A0 END SEQUENCE
>
> =A0 =A0 =A0 BEGIN SEQUENCE
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0// ok
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0REPLACE CALENDAR->SUBJECT =A0 =A0 WITH oItem:getProper=
ty( "Subject")
> =A0 =A0 =A0 =A0 =A0nHit++
> =A0 =A0 =A0 RECOVER USING oError
> =A0 =A0 =A0 =A0 =A0nMiss++
> =A0 =A0 =A0 =A0 =A0LogMe("0 Subject =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0FAIL")
> =A0 =A0 =A0 END SEQUENCE
>
> =A0 =A0 =A0 BEGIN SEQUENCE
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0// ok, nur wenn Eintrag ;)
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0REPLACE CALENDAR->LOCATION =A0 =A0WITH oItem:getProper=
ty( "Location")
> =A0 =A0 =A0 =A0 =A0nHit++
> =A0 =A0 =A0 RECOVER USING oError
> =A0 =A0 =A0 =A0 =A0nMiss++
> =A0 =A0 =A0 =A0 =A0LogMe("0 Location =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
FAIL")
> =A0 =A0 =A0 END SEQUENCE
>
> =A0 =A0 =A0 BEGIN SEQUENCE
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0// ok, nur wenn Eintrag ;)
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0REPLACE CALENDAR->LABELCOLOR =A0WITH oItem:Categories
> =A0 =A0 =A0 =A0 =A0nHit++
> =A0 =A0 =A0 RECOVER USING oError
> =A0 =A0 =A0 =A0 =A0nMiss++
> =A0 =A0 =A0 =A0 =A0LogMe("0 Categories =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 FA=
IL")
> =A0 =A0 =A0 END SEQUENCE
>
> =A0 =A0 =A0 BEGIN SEQUENCE
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0// ok, nur wenn Eintrag ;)
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0REPLACE CALENDAR->MEMOTEXT =A0 =A0WITH oItem:getProper=
ty( "Body")
> =A0 =A0 =A0 =A0 =A0nHit++
> =A0 =A0 =A0 RECOVER USING oError
> =A0 =A0 =A0 =A0 =A0nMiss++
> =A0 =A0 =A0 =A0 =A0LogMe("0 Body =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 FAIL")
> =A0 =A0 =A0 END SEQUENCE
>
> =A0 =A0 =A0 BEGIN SEQUENCE
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0// ok
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0REPLACE CALENDAR->Duration =A0 =A0WITH oItem:getProper=
ty( "Duration")
> =A0 =A0 =A0 =A0 =A0nHit++
> =A0 =A0 =A0 RECOVER USING oError
> =A0 =A0 =A0 =A0 =A0nMiss++
> =A0 =A0 =A0 =A0 =A0LogMe("0 Duration =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
FAIL")
> =A0 =A0 =A0 END SEQUENCE
>
> =A0 =A0 =A0 BEGIN SEQUENCE
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0// ok, nur wenn Eintrag ;)
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0REPLACE CALENDAR->ALLDAY =A0WITH oItem:getProperty("Al=
lDayEvent")
> =A0 =A0 =A0 =A0 =A0nHit++
> =A0 =A0 =A0 RECOVER USING oError
> =A0 =A0 =A0 =A0 =A0nMiss++
> =A0 =A0 =A0 =A0 =A0LogMe("0 AllDayEvent =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0FA=
IL")
> =A0 =A0 =A0 END SEQUENCE
>
> =A0 =A0 =A0 BEGIN SEQUENCE
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0// auch z.b. Geburtstag 1956 !!!
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0REPLACE CALENDAR->RECURREN =A0 =A0WITH oItem:Recurrenc=
eState
> =A0 =A0 =A0 =A0 =A0nHit++
> =A0 =A0 =A0 RECOVER USING oError
> =A0 =A0 =A0 =A0 =A0nMiss++
> =A0 =A0 =A0 =A0 =A0LogMe("0 RecurrenceState =A0 =A0 =A0 =A0 =A0 =A0FAIL")
> =A0 =A0 =A0 END SEQUENCE
>
> =A0 =A0 =A0 BEGIN SEQUENCE
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0// fast immer default Wert
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0nRMBS :=3D oItem:getProperty( "ReminderMinutesBeforeSt=
art")
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0// hm ... =EF=BF=BDberlauf ...
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0IF nRMBS > 999
> =A0 =A0 =A0 =A0 =A0 =A0 nRMBS :=3D 999
> =A0 =A0 =A0 =A0 =A0ENDIF
> =A0 =A0 =A0 =A0 =A0REPLACE CALENDAR->WARNTIME =A0 =A0WITH nRMBS
> =A0 =A0 =A0 =A0 =A0nHit++
> =A0 =A0 =A0 RECOVER USING oError
> =A0 =A0 =A0 =A0 =A0nMiss++
> =A0 =A0 =A0 =A0 =A0LogMe("0 ReminderMinutesBeforeStart FAIL")
> =A0 =A0 =A0 END SEQUENCE
> =A0 =A0 =A0 //
> =A0 =A0 =A0 // hm ... works
> =A0 =A0 =A0 //
> =A0 =A0 =A0 BEGIN SEQUENCE
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0// numerisch weil OUTLOOK.CH Konstante
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0REPLACE CALENDAR->BUSYSTAT =A0 =A0WITH oItem:getProper=
ty( "BusyStatus")
> =A0 =A0 =A0 =A0 =A0nHit++
> =A0 =A0 =A0 RECOVER USING oError
> =A0 =A0 =A0 =A0 =A0nMiss++
> =A0 =A0 =A0 =A0 =A0LogMe("0 BusyStatus =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 FA=
IL")
> =A0 =A0 =A0 END SEQUENCE
>
> =A0 =A0 =A0 BEGIN SEQUENCE
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0// numerisch weil OUTLOOK.CH Konstante
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0REPLACE CALENDAR->IMPORTAN =A0 =A0WITH oItem:getProper=
ty( "Importance")
> =A0 =A0 =A0 =A0 =A0nHit++
> =A0 =A0 =A0 RECOVER USING oError
> =A0 =A0 =A0 =A0 =A0nMiss++
> =A0 =A0 =A0 =A0 =A0LogMe("0 Importance =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 FA=
IL")
> =A0 =A0 =A0 END SEQUENCE
>
> =A0 =A0 =A0 BEGIN SEQUENCE
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0// numerisch weil OUTLOOK.CH Konstante
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0REPLACE CALENDAR->REMINDER WITH oItem:getProperty("Rem=
inderSet")
> =A0 =A0 =A0 =A0 =A0nHit++
> =A0 =A0 =A0 RECOVER USING oError
> =A0 =A0 =A0 =A0 =A0nMiss++
> =A0 =A0 =A0 =A0 =A0LogMe("0 ReminderSet =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0FA=
IL")
> =A0 =A0 =A0 END SEQUENCE
>
> =A0 =A0 =A0 BEGIN SEQUENCE
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0// ok
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0REPLACE CALENDAR->MEETING =A0 =A0 WITH oItem:MeetingSt=
atus
> =A0 =A0 =A0 =A0 =A0nHit++
> =A0 =A0 =A0 RECOVER USING oError
> =A0 =A0 =A0 =A0 =A0nMiss++
> =A0 =A0 =A0 =A0 =A0LogMe("0 MeetingStatus =A0 =A0 =A0 =A0 =A0 =A0 =A0FAIL=
")
> =A0 =A0 =A0 END SEQUENCE
>
> =A0 =A0 =A0 BEGIN SEQUENCE
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0// hm ...
> =A0 =A0 =A0 =A0 =A0//
> =A0 =A0 =A0 =A0 =A0REPLACE CALENDAR->PRIVATE =A0 =A0 WITH oItem:Sensitivi=
ty
> =A0 =A0 =A0 =A0 =A0nHit++
> =A0 =A0 =A0 RECOVER USING oError
> =A0 =A0 =A0 =A0 =A0nMiss++
> =A0 =A0 =A0 =A0 =A0LogMe("0 Sensitivity =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0FA=
IL")
> =A0 =A0 =A0 END SEQUENCE
>
> #IFDEF USEFIND
> =A0 =A0 =A0 currentAppointment :=3D oAppointment:FindNext
> =A0 =A0ENDDO
>
> #ELSE
> =A0 =A0NEXT
> #ENDIF
>
> =A0 =A0CLS
> =A0 =A0? ""
> =A0 =A0? ""
>
> =A0 =A0nEndStart =A0 :=3D SECONDS()
> =A0 =A0SET DECIMALS TO 4
>
> #IFDEF USEFIND
> =A0 =A0? cText :=3D STR(nEndStart-nTimeStart)+" Sec. for "+LTRIM(STR(iMax=
))+"
> Records"
> =A0 =A0LogMe(cText)
> =A0 =A0IF iMax > 0
> =A0 =A0 =A0 ? cText :=3D STR((nEndStart-nTimeStart)/iMax)+" Records per S=
ec."
> =A0 =A0 =A0 LogMe(cText)
>
> =A0 =A0 =A0 ? cText :=3D STR((nEndStart-nTimeStart)/nHit)+" Sec. per acti=
veX Calls"
> =A0 =A0 =A0 LogMe(cText)
>
> =A0 =A0 =A0 ? cText :=3D STR(nMiss)+" ActiveX Calls fail"
> =A0 =A0 =A0 LogMe(cText)
> =A0 =A0ENDIF
> #ELSE
> =A0 =A0? cText :=3D STR(nEndStart-nTimeStart)+" Sec. for "+LTRIM(STR(i))+=
"
> Records"
> =A0 =A0LogMe(cText)
> =A0 =A0IF i > 0
> =A0 =A0 =A0 ? cText :=3D STR((nEndStart-nTimeStart)/i)+" Records per Sec.=
"
> =A0 =A0 =A0 LogMe(cText)
>
> =A0 =A0 =A0 ? cText :=3D STR((nEndStart-nTimeStart)/nHit)+" Sec. per Acti=
veX Calls"
> =A0 =A0 =A0 LogMe(cText)
>
> =A0 =A0 =A0 ? cText :=3D STR(nMiss)+" ActiveX Calls fail"
> =A0 =A0 =A0 LogMe(cText)
> =A0 =A0ENDIF
> #ENDIF
>
> =A0 =A0? ""
> =A0 =A0? ""
> =A0 =A0? ""
>
> =A0 =A0BEGIN SEQUENCE
> =A0 =A0 =A0 oOutlook =A0:=3D NIL
> =A0 =A0RECOVER USING oError
> =A0 =A0END SEQUENCE
>
> =A0 =A0ErrorBlock( bSaveError )
>
> RETURN
>
> FUNCTION MyErrorHandler() =A0 =A0// Fehler-Routine
> =A0 =A0BREAK
> RETURN .F.
>
> STATIC FUNCTION CRE_CALENDAR( datei, alias, id )
> LOCAL p, field_list :=3D {}
>
> =A0 =A0IF VALTYPE( datei ) !=3D "C"
> =A0 =A0 =A0 datei :=3D "CALENDAR.DBF"
> =A0 =A0ENDIF
> =A0 =A0IF VALTYPE( alias ) !=3D "C"
> =A0 =A0 =A0 p :=3D AT( ".", datei )
> =A0 =A0 =A0 alias :=3D IF( p > 0, SUBSTR( datei, 1, p - 1 ), datei )
> =A0 =A0ENDIF
> =A0 =A0IF VALTYPE( id ) !=3D "N"
> =A0 =A0 =A0 id :=3D 0
> =A0 =A0ENDIF
> =A0 =A0SELECT( id )
> ...
>
> mais =BB
|
|
0
|
|
|
|
Reply
|
culikr
|
3/2/2011 1:57:47 PM
|
|
Hello Jimmy,
Did you try to compile it using hbmk2?
I did here but since I do not have Outlook it does not work but compiles
(also I do not have BCC - just have MingW).
Follows my command line:
hbmk2 test -gtwvg -lhbwin -lhbtip -lgtwvw -lhbct -lxhb -lxhb -gui -run
BTW for what is that code for? Could you please explain it? Seems
interesting but I didn�t understand the whole idea.
Qatan
"AUGE_OHR" <AUGE_OHR*NOSPAM@WEB.DE> wrote in message
news:ikkcl1$ga8$02$1@news.t-online.com...
> hi,
>
> please ignore both Function of lates Msg ... they are not need
>
> i have strip down Code to "clean" harbour.
> please compile/link it ( i use BCC55 ) Sample so you can "see" my Problem
>
> i have upgrade to harbour v2.x and my Environment to
>
> Path=C:\hrb_dev\bcc55\bin;C:\HB2\BIN;C:\WINDOWS\system32;C:\WINDOWS;
> SET INCLUDE=C:\hrb_dev\bcc55\Include;C:\HB2\INCLUDE
> SET LIB=C:\hrb_dev\bcc55\Lib;C:\HB2\LIB
> C:
> cd C:\hrb_dev\xmate
> start C:\hrb_dev\xmate\xMate.Exe
>
> and also in xMate config.
> it does start fine but DateTime Field are still empty
>
> can someone help me please
>
> greetings by OHR
> Jimmy
>
> *** Code ***
> #include "inkey.ch"
> #include "common.ch"
>
> #DEFINE olFolderCalendar 9
>
> REQUEST DbfCdx
>
> PROCEDURE MAIN
> LOCAL cAppPath := LEFT(APPNAME(.t.),LEN(APPNAME(.t.))-LEN(APPNAME(.f.)))
> LOCAL zDBF := cAppPath + "CALENDAR.DBF"
> LOCAL cStart
> LOCAL cEnd
> LOCAL nMax := 25 // MAXROW()
> LOCAL nCol := 80 // MAXCOL()
> LOCAL Getlist := {}
>
> SET EPOCH TO YEAR( DATE() ) - 50
> SET DATE GERMAN
>
> cStart := DTOC(DATE()-7) // +" 0:01 AM"
> cEnd := DTOC(DATE()) // +" 0:01 AM"
>
> SELECT 1
> //
> // create DBF
> //
> IF !FILE( zDBF )
> CRE_CALENDAR( zDBF )
> ENDIF
> //
> // create Index
> //
> IF !FILE( STRTRAN(zDBF,".DBF",".CDX") )
> CRE_INDEX(zDBF)
> ENDIF
>
> USE ( zDBF ) VIA "DBFCDX" EXCLUSIVE
> SET INDEX TO (STRTRAN(zDBF,".DBF",".CDX"))
> OrdSetFocus(0)
> ZAP
>
> CLS
> @ (nMax/2)-1,(nCol/2) SAY "Show from "
> @ (nMax/2) ,(nCol/2) SAY "Start Date" GET cStart
> @ (nMax/2)+1,(nCol/2) SAY "End Date" GET cEnd
>
> READ
> CLEAR GETS
>
> // log it to File
> SET ALTER TO DATETIME.TXT
> // start Import
> Fillit(cStart,cEnd)
> SET ALTER TO
>
> GO TOP
> Browse()
>
> RETURN
>
> PROCEDURE Fillit(cStart,cEnd)
> LOCAL oOutlook
> LOCAL oNameSpace
> LOCAL oAppointment
> LOCAL currentAppointment
> LOCAL i,iMax
> LOCAL oItem
> LOCAL cStringStart
> LOCAL cDateStart
> LOCAL cTimeStart
> LOCAL nRMBS
> LOCAL bSaveError
> LOCAL oError
> LOCAL nMax := MAXROW()
> LOCAL nCol := MAXCOL()
> LOCAL cFilter
> LOCAL cMax
> LOCAL aDateSec
> LOCAL nTimeStart
> LOCAL nEndStart
> LOCAL cText
> LOCAL nHit := 0
> LOCAL nMiss := 0
>
> oOutlook := CreateObject( "Outlook.Application" )
> IF Empty(oOutLook)
> RETURN
> ENDIF
>
> oNameSpace := oOutlook:GetNamespace( "MAPI" )
>
> cFilter := "[Start] >= '"+ cStart + "' and [Start] <= '"+ cEnd +"'"
> oAppointment := oNameSpace:getDefaultFolder( olFolderCalendar ):Items
>
> #IFDEF USEFIND
> currentAppointment := oAppointment:Find(cFilter)
> #ELSE
> currentAppointment := oAppointment:Restrict(cFilter)
> #ENDIF
>
> iMax := currentAppointment:count()
> cMax := LTRIM(STR(iMax))
> nTimeStart := SECONDS()
>
> bSaveError := ErrorBlock( {|oError| MyErrorHandler(oError) })
>
> #IFDEF USEFIND
> i = 0
> DO While NIL <> currentAppointment
> oItem := currentAppointment
> i++
> #ELSE
> FOR i := 1 TO iMax
> oItem := currentAppointment:item(i)
> #ENDIF
>
> APPEND BLANK
> //
> // will work
> //
> BEGIN SEQUENCE
> LogMe("1 Start")
> cStringStart := oItem:treatDateAsString(.T.):getProperty("Start")
> LogMe("2 Start"+cStringStart)
> //
> // GERMAN Notation
> //
> cDateStart := SUBSTR( cStringStart, 1, 8 ) // YYYYMMDDHHMMSS
> cTimeStart := SUBSTR( cStringStart, 9, 2 )+":"+;
> SUBSTR(cStringStart, 11, 2 ) + ":" +;
> SUBSTR( cStringStart, 13, 2 )
>
> REPLACE CALENDAR->STARTDATE WITH STOD(cDateStart )
> REPLACE CALENDAR->STARTTIME WITH cTimeStart
>
> nHit++
> RECOVER USING oError
> nMiss++
> cStringStart := ""
> LogMe("0 Start FAIL")
> END SEQUENCE
>
> @ nMax,nCol/3 SAY cMax+"/"+STR(i)+" "+cStringStart
>
> BEGIN SEQUENCE
> //
> // MUST !!!
> //
> LogMe("1 CreationTime")
> cStringStart :=
> oItem:treatDateAsString(.T.):getProperty("CreationTime")
> LogMe("2 CreationTime"+cStringStart)
> REPLACE CALENDAR->CREDATE WITH cStringStart
>
> nHit++
> RECOVER USING oError
> nMiss++
> LogMe("0 CreationTime FAIL")
> END SEQUENCE
>
> BEGIN SEQUENCE
> //
> // MUST !!!
> LogMe("1 LastModificationTime")
> cStringStart :=
> oItem:treatDateAsString(.T.):getProperty("LastModificationTime")
> LogMe("2 LastModificationTime"+cStringStart)
> REPLACE CALENDAR->LASTDATE WITH cStringStart
>
> nHit++
> RECOVER USING oError
> nMiss++
> LogMe("0 LastModificationTime FAIL")
> END SEQUENCE
>
> BEGIN SEQUENCE
> //
> // ok
> //
> REPLACE CALENDAR->SUBJECT WITH oItem:getProperty( "Subject")
> nHit++
> RECOVER USING oError
> nMiss++
> LogMe("0 Subject FAIL")
> END SEQUENCE
>
> BEGIN SEQUENCE
> //
> // ok, nur wenn Eintrag ;)
> //
> REPLACE CALENDAR->LOCATION WITH oItem:getProperty( "Location")
> nHit++
> RECOVER USING oError
> nMiss++
> LogMe("0 Location FAIL")
> END SEQUENCE
>
> BEGIN SEQUENCE
> //
> // ok, nur wenn Eintrag ;)
> //
> REPLACE CALENDAR->LABELCOLOR WITH oItem:Categories
> nHit++
> RECOVER USING oError
> nMiss++
> LogMe("0 Categories FAIL")
> END SEQUENCE
>
> BEGIN SEQUENCE
> //
> // ok, nur wenn Eintrag ;)
> //
> REPLACE CALENDAR->MEMOTEXT WITH oItem:getProperty( "Body")
> nHit++
> RECOVER USING oError
> nMiss++
> LogMe("0 Body FAIL")
> END SEQUENCE
>
> BEGIN SEQUENCE
> //
> // ok
> //
> REPLACE CALENDAR->Duration WITH oItem:getProperty( "Duration")
> nHit++
> RECOVER USING oError
> nMiss++
> LogMe("0 Duration FAIL")
> END SEQUENCE
>
> BEGIN SEQUENCE
> //
> // ok, nur wenn Eintrag ;)
> //
> REPLACE CALENDAR->ALLDAY WITH oItem:getProperty("AllDayEvent")
> nHit++
> RECOVER USING oError
> nMiss++
> LogMe("0 AllDayEvent FAIL")
> END SEQUENCE
>
> BEGIN SEQUENCE
> //
> // auch z.b. Geburtstag 1956 !!!
> //
> REPLACE CALENDAR->RECURREN WITH oItem:RecurrenceState
> nHit++
> RECOVER USING oError
> nMiss++
> LogMe("0 RecurrenceState FAIL")
> END SEQUENCE
>
> BEGIN SEQUENCE
> //
> // fast immer default Wert
> //
> nRMBS := oItem:getProperty( "ReminderMinutesBeforeStart")
> //
> // hm ... �berlauf ...
> //
> IF nRMBS > 999
> nRMBS := 999
> ENDIF
> REPLACE CALENDAR->WARNTIME WITH nRMBS
> nHit++
> RECOVER USING oError
> nMiss++
> LogMe("0 ReminderMinutesBeforeStart FAIL")
> END SEQUENCE
> //
> // hm ... works
> //
> BEGIN SEQUENCE
> //
> // numerisch weil OUTLOOK.CH Konstante
> //
> REPLACE CALENDAR->BUSYSTAT WITH oItem:getProperty(
> "BusyStatus")
> nHit++
> RECOVER USING oError
> nMiss++
> LogMe("0 BusyStatus FAIL")
> END SEQUENCE
>
> BEGIN SEQUENCE
> //
> // numerisch weil OUTLOOK.CH Konstante
> //
> REPLACE CALENDAR->IMPORTAN WITH oItem:getProperty(
> "Importance")
> nHit++
> RECOVER USING oError
> nMiss++
> LogMe("0 Importance FAIL")
> END SEQUENCE
>
> BEGIN SEQUENCE
> //
> // numerisch weil OUTLOOK.CH Konstante
> //
> REPLACE CALENDAR->REMINDER WITH oItem:getProperty("ReminderSet")
> nHit++
> RECOVER USING oError
> nMiss++
> LogMe("0 ReminderSet FAIL")
> END SEQUENCE
>
> BEGIN SEQUENCE
> //
> // ok
> //
> REPLACE CALENDAR->MEETING WITH oItem:MeetingStatus
> nHit++
> RECOVER USING oError
> nMiss++
> LogMe("0 MeetingStatus FAIL")
> END SEQUENCE
>
> BEGIN SEQUENCE
> //
> // hm ...
> //
> REPLACE CALENDAR->PRIVATE WITH oItem:Sensitivity
> nHit++
> RECOVER USING oError
> nMiss++
> LogMe("0 Sensitivity FAIL")
> END SEQUENCE
>
> #IFDEF USEFIND
> currentAppointment := oAppointment:FindNext
> ENDDO
>
> #ELSE
> NEXT
> #ENDIF
>
> CLS
> ? ""
> ? ""
>
> nEndStart := SECONDS()
> SET DECIMALS TO 4
>
> #IFDEF USEFIND
> ? cText := STR(nEndStart-nTimeStart)+" Sec. for "+LTRIM(STR(iMax))+"
> Records"
> LogMe(cText)
> IF iMax > 0
> ? cText := STR((nEndStart-nTimeStart)/iMax)+" Records per Sec."
> LogMe(cText)
>
> ? cText := STR((nEndStart-nTimeStart)/nHit)+" Sec. per activeX Calls"
> LogMe(cText)
>
> ? cText := STR(nMiss)+" ActiveX Calls fail"
> LogMe(cText)
> ENDIF
> #ELSE
> ? cText := STR(nEndStart-nTimeStart)+" Sec. for "+LTRIM(STR(i))+"
> Records"
> LogMe(cText)
> IF i > 0
> ? cText := STR((nEndStart-nTimeStart)/i)+" Records per Sec."
> LogMe(cText)
>
> ? cText := STR((nEndStart-nTimeStart)/nHit)+" Sec. per ActiveX Calls"
> LogMe(cText)
>
> ? cText := STR(nMiss)+" ActiveX Calls fail"
> LogMe(cText)
> ENDIF
> #ENDIF
>
> ? ""
> ? ""
> ? ""
>
> BEGIN SEQUENCE
> oOutlook := NIL
> RECOVER USING oError
> END SEQUENCE
>
> ErrorBlock( bSaveError )
>
> RETURN
>
> FUNCTION MyErrorHandler() // Fehler-Routine
> BREAK
> RETURN .F.
>
>
> STATIC FUNCTION CRE_CALENDAR( datei, alias, id )
> LOCAL p, field_list := {}
>
> IF VALTYPE( datei ) != "C"
> datei := "CALENDAR.DBF"
> ENDIF
> IF VALTYPE( alias ) != "C"
> p := AT( ".", datei )
> alias := IF( p > 0, SUBSTR( datei, 1, p - 1 ), datei )
> ENDIF
> IF VALTYPE( id ) != "N"
> id := 0
> ENDIF
> SELECT( id )
> IF !FILE( datei )
> AADD( field_list, { "EVENTID" , "N", 7, 0 } ) // 9.999.999 Item
> enough ?
> AADD( field_list, { "CREDATE" , "C", 14, 0 } ) // YYYYMMDDHHMMSS
> AADD( field_list, { "LASTDATE" , "C", 14, 0 } )
>
> AADD( field_list, { "SUBJECT" , "C", 100, 0 } )
> AADD( field_list, { "LOCATION" , "C", 100, 0 } )
> AADD( field_list, { "STARTDATE" , "D", 8, 0 } )
> AADD( field_list, { "STARTTIME" , "C", 8, 0 } )
> * AADD( field_list, { "ENDDATE" , "D", 8, 0 } )
> * AADD( field_list, { "ENDTIME" , "C", 8, 0 } )
> AADD( field_list, { "DURATION" , "N", 5, 0 } )
> AADD( field_list, { "ALLDAY" , "L", 1, 0 } )
> AADD( field_list, { "LABELCOLOR" , "C", 20, 0 } )
> * aadd( field_list, { "LABELTEXT" , "C", 30, 0 } )
> AADD( field_list, { "PRIVATE" , "N", 3, 0 } )
> AADD( field_list, { "MEETING" , "N", 3, 0 } )
> AADD( field_list, { "REMINDER" , "L", 1, 0 } )
> AADD( field_list, { "WARNTIME" , "N", 3, 0 } )
> * AADD( field_list, { "REMINDTIME" , "C", 14, 0 } )
> * AADD( field_list, { "SCHEDULE" , "N", 3, 0 } )
> * aadd( field_list, { "SHOWTIMEAS" , "C", 30, 0 } )
> AADD( field_list, { "IMPORTAN" , "N", 3, 0 } )
> AADD( field_list, { "BUSYSTAT" , "N", 3, 0 } )
> AADD( field_list, { "RECURREN" , "N", 3, 0 } ) //
> RecurrenceState
> only
>
> //
> // just for mark Record as deleted
> //
> AADD( field_list, { "MARKDEL" , "L", 1, 0 } ) // is Record
> deleted
> //
> // Memofields
> //
> AADD( field_list, { "MEMOTEXT" , "M", 10, 0 } )
> * AADD( field_list, { "MAKEUP" , "M", 10, 0 } ) // XML MarkUp
>
> #IFDEF __XPP__
> DBCREATE( datei, field_list, "FOXCDX")
> #ELSE
> DBCREATE( datei, field_list, "DBFCDX" )
> #ENDIF
>
>
> ENDIF
>
> RETURN .T.
>
> STATIC FUNCTION CRE_INDEX(zDBF)
> LOCAL _tagname
> LOCAL _keyfeld
> LOCAL _cdxname
>
> _cdxname := STRTRAN(zDBF,".DBF",".CDX")
>
> *# SNAPCODE USE CALENDAR.DBF
> USE (zDBF) VIA "DBFCDX" EXCLUSIVE
> //
> // index on EVENTID
> //
> _tagname := "ID"
> _KEYFELD := "EVENTID"
> ORDCREATE(_cdxname,_tagname,_keyfeld)
> CLOSE INDEX
>
> _tagname := "STARTDATE"
> _KEYFELD := "DTOS( Startdate ) + STRTRAN( Starttime, ':', '' )"
> ORDCREATE(_cdxname,_tagname,_keyfeld)
> CLOSE INDEX
>
> _tagname := "SUBJECT"
> _KEYFELD := "SUBJECT"
> ORDCREATE(_cdxname,_tagname,_keyfeld)
> CLOSE INDEX
>
> //
> // index on "markdel" Flag to "recycle" Records
> //
> _tagname := "MARKDEL"
> _KEYFELD := "IF( MARKDEL = .T., 'Y', 'N' )"
> ORDCREATE(_cdxname,_tagname,_keyfeld)
> CLOSE INDEX
>
> CLOSE
>
> RETURN ( .t. )
>
> STATIC FUNCTION LogMe(cText)
> SET ALTER ON
> SET CONSOLE OFF
>
> ? DATE(),TIME(),cText
>
> SET CONSOLE ON
> SET ALTER OFF
>
> RETURN nil
>
> FUNCTION HB_GTSYS()
> REQUEST HB_GT_WVG_DEFAULT
> REQUEST HB_GT_WVT
> REQUEST HB_GT_WGU
> RETURN NIL
>
> STATIC FUNCTION AppName( lWithPath )
> LOCAL n
> LOCAL cName := hb_argV( 0 )
> //
> DEFAULT lWithPath TO .f.
> //
> IF !( lWithPath )
> IF ( n := rat( '\', cName ) ) > 0
> cName := substr( cName, n+1 )
> ENDIF
> ENDIF
> //
> RETURN cName
>
> STATIC FUNCTION MsgBox( cMessage, cTitle )
> RETURN Win_MessageBox( , cMessage, cTitle )
>
> STATIC FUNCTION AltD()
> RETURN nil
> *
> *
> *
> *** Eof ***
>
>
>
>
--- news://freenews.netfront.net/ - complaints: news@netfront.net ---
|
|
0
|
|
|
|
Reply
|
Qatan
|
3/2/2011 4:11:44 PM
|
|
hi,
thx for help
>First
>install xharbour from http://free.xharbour.com
i did have installed harbour v2.x.
is there a Differenz when build Application ?
>use xbuild to compile your app.
i can compile / link and run my harbour Application.
it is only the DateTime from Outlook activeX which fail
what did i miss ?
greetings by OHR
Jimmy
|
|
0
|
|
|
|
Reply
|
AUGE_OHR
|
3/2/2011 4:42:23 PM
|
|
hi,
> Did you try to compile it using hbmk2?
i use Bedi Pritpal GTWVG Constribution as Environment
and start compile / link from xMate.
all my harbour Application work fine it is only the
Outlook activeX DateTime which fail
>BTW for what is that code for? Could you please explain it? Seems
>interesting but I didn�t understand the whole idea.
which activeX you can read / write to Outlook Contact, Mail
and Calendar using "simple" MAPI.
to use Outlook in a Network you need Exchange ( or SBS)
to share it so i made a Xbase++ Clone for it and share DBF
now i try to port Xbase++ Code to harbour to get a single EXE
but DateTime :treatDateAsString(.T.):getProperty("Start") fail
greetings by OHR
Jimmy
|
|
0
|
|
|
|
Reply
|
AUGE_OHR
|
3/2/2011 4:53:57 PM
|
|
Xharbour have gtwvg
compile your app with xharbour using xbuild utility
Regards
Luiz
On 2 mar, 13:53, "AUGE_OHR" <AUGE_OHR*NOS...@WEB.DE> wrote:
> hi,
>
> > =A0 =A0Did you try to compile it using hbmk2?
>
> i use Bedi Pritpal GTWVG Constribution as Environment
> and start compile / link from xMate.
>
> all my harbour Application work fine it is only the
> Outlook activeX DateTime which fail
>
> >BTW for what is that code for? Could you please explain it? Seems
> >interesting but I didn t understand the whole idea.
>
> which activeX you can read / write to Outlook Contact, Mail
> and Calendar using "simple" MAPI.
>
> to use Outlook in a Network you need Exchange ( or SBS)
> to share it so i made a Xbase++ Clone for it and share DBF
>
> now i try to port Xbase++ Code to harbour to get a single EXE
> but DateTime :treatDateAsString(.T.):getProperty("Start") fail
>
> greetings by OHR
> Jimmy
|
|
0
|
|
|
|
Reply
|
culikr
|
3/2/2011 5:13:58 PM
|
|
Hello Jimmy,
Thanks for explaining.
It is interesting...
Qatan
"AUGE_OHR" <AUGE_OHR*NOSPAM@WEB.DE> wrote in message
news:iklsnl$ef6$01$1@news.t-online.com...
> hi,
>
>> Did you try to compile it using hbmk2?
>
> i use Bedi Pritpal GTWVG Constribution as Environment
> and start compile / link from xMate.
>
> all my harbour Application work fine it is only the
> Outlook activeX DateTime which fail
>
>>BTW for what is that code for? Could you please explain it? Seems
>>interesting but I didn�t understand the whole idea.
>
> which activeX you can read / write to Outlook Contact, Mail
> and Calendar using "simple" MAPI.
>
> to use Outlook in a Network you need Exchange ( or SBS)
> to share it so i made a Xbase++ Clone for it and share DBF
>
> now i try to port Xbase++ Code to harbour to get a single EXE
> but DateTime :treatDateAsString(.T.):getProperty("Start") fail
>
> greetings by OHR
> Jimmy
>
>
--- news://freenews.netfront.net/ - complaints: news@netfront.net ---
|
|
0
|
|
|
|
Reply
|
Qatan
|
3/2/2011 5:16:34 PM
|
|
hi,
>install xharbour from http://free.xharbour.com
>use xbuild to compile your app.
i did what you say.
i can build EXE with xbuild
i can run EXE fine
.... but still DateTime from Outlook Calender activeX is empty
can someone please try my Source and confirm it
greetings by OHR
Jimmy
|
|
0
|
|
|
|
Reply
|
nospam23 (74)
|
3/3/2011 9:35:09 PM
|
|
hi,
sorry for late Answer
> Can you try the following:
>
> -----8<-----
> proc main()
>
> ? DATETIMESTR()
>
> #pragma begindump
> #include "hbapi.h"
> #include "hbapiitm.h"
> #include "hbdate.h"
>
> HB_FUNC( DATETIMESTR )
> {
> PHB_ITEM pTemp = hb_itemNew( NULL );
> int iYear, iMonth, iDay;
> char szDateTime[18];
> char szDate[9];
> char szTime[9];
> char szTmp[9];
> int i, u = 0;
>
> *szDateTime = 0;
> hb_dateTimeStr( szTime );
> hb_dateToday( &iYear, &iMonth, &iDay );
> hb_itemPutD( pTemp, iYear, iMonth, iDay );
> hb_dateDecStr( szDate, hb_itemGetDL( pTemp ) );
>
> for( i = 0; i < 8; i++ )
> {
> if (!( szTime[ i ] == ':' ))
> szTmp[ u++ ] = szTime[ i ];
> }
>
> szTmp[ u ] = 0;
> hb_xstrcat( szDateTime, szDate, szTmp, 0 );
> hb_retc( szDateTime );
> hb_itemRelease( pTemp );
> }
>
> #pragma enddump
> -----8<-----
YES this now work !!!
Xbase++
cStringStart := oItem:treatDateAsString( .T. ):getProperty( "Start")
xharbour
cStringStart := DATETIMESTR(oItem:getProperty( "Start"))
any Way to make it Xbase++ "compatible" ?
thx, greetings by OHR
Jimmy
|
|
0
|
|
|
|
Reply
|
nospam23 (74)
|
3/4/2011 1:42:56 AM
|
|
hi,
> YES this now work !!!
.... but only once ... now with
cStringStart := DATETIMESTR(oItem:getProperty( "Start"))
all Records are filled with same ( 1st ) Value ... :(
greetings by OHR
Jimmy
|
|
0
|
|
|
|
Reply
|
nospam23 (74)
|
3/4/2011 3:04:15 AM
|
|
Hi Jimmy,
The function that I wrote returns today's date.
To fullfil your need, please info what is returned by:
oItem:getProperty("Start") => return what?
I can easily modify the function.
Andi
On Fri, 4 Mar 2011 04:04:15 +0100, "AUGE_OHR" <AUGE_OHR*NOSPAM@WEB.DE>
wrote:
>hi,
>
>> YES this now work !!!
>
>... but only once ... now with
>
>cStringStart := DATETIMESTR(oItem:getProperty( "Start"))
>
>all Records are filled with same ( 1st ) Value ... :(
>
> greetings by OHR
>Jimmy
>
|
|
0
|
|
|
|
Reply
|
xharbour_delete (69)
|
3/4/2011 3:44:09 AM
|
|
hi,
> The function that I wrote returns today's date.
> To fullfil your need, please info what is returned by:
aha ... now i "see" it
> oItem:getProperty("Start") => return what?
> I can easily modify the function.
it should return YYYYMMDDHHMMSS but harbour seems to fail
usind activeX with :getProperty() and (VB ?) DateTime.
my Code (see above) did run correct with Xbase++ and
:treatDateAsString( .T. ):getProperty() but i remember
we had same Problem with Xbase++ some Years ago
greetings by OHR
Jimmy
|
|
0
|
|
|
|
Reply
|
nospam23 (74)
|
3/4/2011 2:06:19 PM
|
|
hi,
i "think" i got it
cStringStart := TtoS(oItem:getProperty( "CreationTime"))
will give me "20110304041200.985"
greetings by OHR
Jimmy
|
|
0
|
|
|
|
Reply
|
nospam23 (74)
|
3/4/2011 9:35:41 PM
|
|
|
18 Replies
153 Views
(page loaded in 0.226 seconds)
Similiar Articles:7/16/2012 9:42:07 AM
|