you can change your DeleteTlphone method to this ... so you don't need to open the object before (this is the way i prefer) ...
ClassMethod DeleteTlphone(TlphoneID As %Integer) As %String
{
Set sc=##class(pkgAddressBook.cTlphones).%DeleteId(TlphoneID)
if sc Quit 1
Quit 0
}
the error comes from the csp-page not the class.
Do you have a DeleteTlphone() method inside the page ? I think this is what you call via #server(..DeleteTlphone(intID))#;
Remove it and call the "ClassMethod" DeleteTlphone() instead via
Result=#server(pkgAddressBook.cTlphones.DeleteTlphone(intID))#;
if (Result=='1') alert('Delete ok');If this is not working please provide us with the csp-Page-Source also.
Regards... Bernd!
RJH wrote:
Ok, here is the complete class
Class pkgAddressBook.cTlphones Extends %Persistent [ ClassType = persistent, ProcedureBlock, SqlTableName = Tlphones ] {
Property Person As cPerson;
Property Tlphone As %String;
Property TlphoneType As cTlphoneTypes;
Index TlphoneIndex On Tlphone [ Unique ];
Query qPrsonTlphnes(PrsonID As %Integer = 0) As %SQLQuery(CONTAINID = 1) { SELECT %ID,Person->Category->Category,Person->Category->ID,Person->Category->ID,Per son->FirstNme,Person->ID,Person->LastNme,Tlphone,TlphoneType->ID,TlphoneType ->TlphoneType FROM Tlphones WHERE (Person = :PrsonID) ORDER BY Tlphone }
ClassMethod DeleteTlphone(TlphoneID As %Integer) { Set objTlphone = ##class(pkgAddressBook.cTlphones).%OpenId(TlphoneID) Do objTlphone.%Delete() //Do ##class(pkgAddressBook.cTlphones).%DeleteId(TlphoneID) //set sc=$zobjclassmethod(pkgAddressBook.cTlphones,"%DeleteId",TlphoneID) }
}
I then call it from ShowTlphones csp
<SCRIPT Language=JavaScript> <!--
function RmoveTlphone(intID) { #server(..DeleteTlphone(intID))#; } // --> </SCRIPT>
And get the following error.
csp.showtlphones.1(0) : OBJ5376 : Method or Property '%DeleteData' does not exist in this class. TEXT: Set sc=..%DeleteData(id,concurrency)
Errors detected during compile.
Before adding the delete method, everything was working fine. Can you explain how to get rid of the error and the proper way to add delete functionality from a csp page?
"RJH" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED]
I added a method to delete a record here is the code:
ClassMethod DeleteRecord(intID As %Integer) { //Set obj = ##class(ClassNamePackage.Class).%OpenId(intID) //Do obj.%Delete() //Do ##class(ClassNamePackage.Class).%DeleteId(intID) set sc=$zobjclassmethod(ClassNamePackage.Class,"%DeleteId",intID)
}
As you can see I tried 3 different versions. But I get the following error
Method or property %DeleteData does not exists.
I removed the method, but can not re-compile. I get the same error. Can anyone help and explain what is going on?
