Not sure what you mean by
"You might create an updatable SPT to fill in the fields and update."
Can you elaborate on this a bit more please?
>Yep I noticed that after I replied and already updated my previous reply.
>1) Execute SQLExec where you have those variables (in procedure you sent).
>2) Pass the variables to the procedure which executes the code. Since you'd need multiple parameters probably you'd want to create a single object and pass it instead. ie:
>
>oParms = createobject('Empty')
>Addproperty(oParms,'tDateTime',datetime())
>...
>
>* And change your string to read
>... values (?oParms.tDateTime, ...)
>
>3) You might create an updatable SPT to fill in the fields and update.
>4) Worst case build the string with values.
>Cetin
>
>
>
>>Ok, I see what is happening.
>>
>>As Aergey pointed out, the parameter values are dropping out of scope
>>when the call to ._oSQLProcs.SQLCommand(sSqlCommand) happens.
>>
>>I'm open to suggesstions on the best way to do this.
>>
>>
>>
>>
>>
>>>See my previous reply (and previous of previous ...). Include the alias prefix:
>>>
>>>(?m.tDateTime
>>>not
>>>(?tDateTime
>>>
>>>PS: Wait a min. You're calling another procedure to execute the command. Do the varables are still in scope there???
>>>Cetin
>>>
>>>>Here is the code for the entire function. All paramter variables being passed
>>>>to SQL contained values when I ran it.
>>>>
>>>>
>>>>PROCEDURE HandleError(sAppName AS String, iErrNo AS Integer,;
>>>> sErrMessage AS String, sLineOfCode AS String,;
>>>> sProgram AS String, iLineNo AS int, sStack AS String)
>>>>
>>>> LOCAL iRetVal, sDateTime, sErrNo, sLineNo, sUserId, sMemory, sStatus
>>>> LOCAL sSqlCommand
>>>>
>>>> iRetVal = TRUE
>>>>
>>>> WITH This
>>>>
>>>> ** Setup the connection
>>>> IF .Setup()
>>>>
>>>> tDateTime = DATETIME()
>>>> sUserId = UPPER(ALLTRIM(SUBSTR(SYS(0), AT("#", SYS(0))+1)))
>>>>
>>>> TEXT TO sSqlCommand NOSHOW
>>>>
>>>> insert into syserrors
>>>> (datetime, error, line, message, codeline, program,
>>>> [user], appname)
>>>> values
>>>> (?tDateTime, ?iErrNo , ?iLineNo, ?sErrMessage, ?sLineOfCode,
>>>> ?sProgram, ?sUserId, ?sAppName)
>>>>
>>>> ENDTEXT
>>>>
>>>> ** Run the insert command
>>>> ._oSQLProcs.SQLCommand(sSqlCommand)
>>>>
>>>> ** Check for and handle any errors that occured
>>>> ._CheckForSQLError()
>>>>
>>>> ENDIF
>>>>
>>>> ENDWITH
>>>>
>>>>RETURN
>>>>
>>>>ENDPROC
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>>Are you sure? I didn't see all in code. It asks for those missing only. Please do not forget to prefix with m. or alias,object name (if from a cursor, object).
>>>>>Cetin
>>>>>
>>>>>>All variables are filled in already. I'm getting prompted for
>>>>>>parameter values.
>>>>>>
>>>>>>
>>>>>>>Great they already are coming as parameters:)
>>>>>>>Fill in those that aren't passed as parameters before call to SQLExec().
>>>>>>>
>>>>>>>PROCEDURE HandleError(sAppName AS String, iErrNo AS Integer,;
>>>>>>> sErrMessage AS String, sLineOfCode AS String,;
>>>>>>> sProgram AS String, iLineNo AS int, sStack AS String)
>>>>>>>TEXT TO sSqlCommand NOSHOW
>>>>>>> insert into syserrors
>>>>>>> (datetime, error, line, message, codeline, program,
>>>>>>> [user], appname, memory, status, callstack)
>>>>>>> values
>>>>>>> (?m.tDateTime, ?m.iErrNo , ?m.iLineNo, ?m.sErrMessage, ?m.sLineOfCode, ?m.sProgram,
>>>>>>> ?m.sUserId, ?m.sAppName, ?sMemory, ?sStatus, ?sStack)
>>>>>>>ENDTEXT
>>>>>>>tDateTime = datetime()
>>>>>>>sUserId = 'whoever'
>>>>>>>sMemory = 'whatever'
>>>>>>>sStatus = 'yourstatus'
>>>>>>>SQLExec(...)
>>>>>>>
Cetin
Everything makes sense in someone's mind
public class SystemCrasher :ICrashable
In addition, an integer field is not for irrational people