Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Can someone tell me why this query does not work?
Message
From
10/12/2013 13:22:15
 
 
To
10/12/2013 11:51:03
General information
Forum:
Visual FoxPro
Category:
Databases,Tables, Views, Indexing and SQL syntax
Environment versions
Visual FoxPro:
VFP 9 SP2
OS:
Windows 7
Network:
Windows 2008 Server
Database:
Visual FoxPro
Application:
Desktop
Miscellaneous
Thread ID:
01589692
Message ID:
01589713
Views:
61
Marcia,

I'd either create an additional T field in the table, set that once and normalization be damned for the moment or create a function and call that always in the SQL - deciding by size of table re slowdown through multiple function call which stinks less ;-)

Too much technical debt entering here via the decision to use a date and a time field - as that is possibly at the fwk level, make the client an offer to fix either for normalized again or live with added duration (in his app and/or your work), even if it is only copy&paste effort.



>Hi all.
>
>I have beat my head on the keyboard for long enough. Here is the query (angle brackets have been replaced by square brackets for readability here)
>
>
>TEXT TO lcSQL TEXTMERGE NOSHOW PRETEXT 15
>    SELECT DATETIME(YEAR(VEH.EvtDate), MONTH(VEH.EvtDate), DAY(VEH.EvtDate), VAL(GETWORDNUM(VEH.EvtTime, 1, ":")), VAL(GETWORDNUM(VEH.EvtTime, 2, ":"))) AS start_time, 
>	DATETIME(YEAR(VEH.EvtDate), MONTH(VEH.EvtDate), DAY(VEH.EvtDate), VAL(GETWORDNUM(VEH.EvtTime, 1, ":")), VAL(GETWORDNUM(VEH.EvtTime, 2, ":"))) + ((VAL(GETWORDNUM(VEH.duration, 1, ':')) * 3600) + (VAL(GETWORDNUM(VEH.duration, 2, ':')) * 60)) AS end_time, 
>	ST.descr AS SvcType_dsc, SVC.servref 
>    FROM funeral!ServiceVehicle VEH WITH (BUFFERING = .T.) 
>	JOIN aserdet SVC WITH (BUFFERING = .T.) ON VEH.service_id = SVC.serviceid 
>	JOIN psvctype ST ON SVC.servtype = ST.code 
>	WHERE VEH.VehCode =  '[[tcVehCode]]'  
>		AND VEH.SvcVehID # [[tiSvcVehID]]  
>		AND DATETIME(YEAR(VEH.EvtDate), MONTH(VEH.EvtDate), DAY(VEH.EvtDate), VAL(GETWORDNUM(VEH.EvtTime, 1, ":")), VAL(GETWORDNUM(VEH.EvtTime, 2, ":"))) < {[[ttEndTime]]} 
>		AND DATETIME(YEAR(VEH.EvtDate), MONTH(VEH.EvtDate), DAY(VEH.EvtDate), VAL(GETWORDNUM(VEH.EvtTime, 1, ":")), VAL(GETWORDNUM(VEH.EvtTime, 2, ":"))) + ((VAL(GETWORDNUM(VEH.duration, 1, ':')) * 3600) + (VAL(GETWORDNUM(VEH.duration, 2, ':')) * 60)) > {[[ttStartTime]]}
>ENDTEXT 
>
>
>It hands me back Function argument value, type, or count is invalid.
>
>Now the goofy thing is that this one works:
>
>
>TEXT TO lcSQL TEXTMERGE NOSHOW PRETEXT 15
>    SELECT DATETIME(YEAR(VEH.EvtDate), MONTH(VEH.EvtDate), DAY(VEH.EvtDate), VAL(GETWORDNUM(VEH.EvtTime, 1, ":")), VAL(GETWORDNUM(VEH.EvtTime, 2, ":"))) AS start_time, 
>	DATETIME(YEAR(VEH.EvtDate), MONTH(VEH.EvtDate), DAY(VEH.EvtDate), VAL(GETWORDNUM(VEH.EvtTime, 1, ":")), VAL(GETWORDNUM(VEH.EvtTime, 2, ":"))) + ((VAL(GETWORDNUM(VEH.duration, 1, ':')) * 3600) + (VAL(GETWORDNUM(VEH.duration, 2, ':')) * 60)) AS end_time, 
>	ST.descr AS SvcType_dsc, SVC.servref 
>    FROM funeral!ServiceVehicle VEH WITH (BUFFERING = .T.) 
>	JOIN aserdet SVC WITH (BUFFERING = .T.) ON VEH.service_id = SVC.serviceid 
>	JOIN psvctype ST ON SVC.servtype = ST.code 
>	WHERE VEH.VehCode =  '[[tcVehCode]]'  
>		AND VEH.SvcVehID # [[tiSvcVehID]] 
>		AND DATETIME(YEAR(VEH.EvtDate), MONTH(VEH.EvtDate), DAY(VEH.EvtDate), VAL(GETWORDNUM(VEH.EvtTime, 1, ":")), VAL(GETWORDNUM(VEH.EvtTime, 2, ":"))) < {[[ttEndTime]]} 
>ENDTEXT 
>
>
>and this one works:
>
>TEXT TO lcSQL TEXTMERGE NOSHOW PRETEXT 15
>    SELECT DATETIME(YEAR(VEH.EvtDate), MONTH(VEH.EvtDate), DAY(VEH.EvtDate), VAL(GETWORDNUM(VEH.EvtTime, 1, ":")), VAL(GETWORDNUM(VEH.EvtTime, 2, ":"))) AS start_time, 
>	DATETIME(YEAR(VEH.EvtDate), MONTH(VEH.EvtDate), DAY(VEH.EvtDate), VAL(GETWORDNUM(VEH.EvtTime, 1, ":")), VAL(GETWORDNUM(VEH.EvtTime, 2, ":"))) + ((VAL(GETWORDNUM(VEH.duration, 1, ':')) * 3600) + (VAL(GETWORDNUM(VEH.duration, 2, ':')) * 60)) AS end_time, 
>	ST.descr AS SvcType_dsc, SVC.servref 
>    FROM funeral!ServiceVehicle VEH WITH (BUFFERING = .T.) 
>	JOIN aserdet SVC WITH (BUFFERING = .T.) ON VEH.service_id = SVC.serviceid 
>	JOIN psvctype ST ON SVC.servtype = ST.code 
>	WHERE VEH.VehCode =  '[[tcVehCode]]'  
>		AND VEH.SvcVehID # [[tiSvcVehID]] 
>		AND DATETIME(YEAR(VEH.EvtDate), MONTH(VEH.EvtDate), DAY(VEH.EvtDate), VAL(GETWORDNUM(VEH.EvtTime, 1, ":")), VAL(GETWORDNUM(VEH.EvtTime, 2, ":"))) + ((VAL(GETWORDNUM(VEH.duration, 1, ':')) * 3600) + (VAL(GETWORDNUM(VEH.duration, 2, ':')) * 60)) > {[[ttStartTime]]}
>ENDTEXT 
>
>
>So why doesn't it work with both the start time and the end time in the where clause?
>
>TIA
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform