Some time ago, I read, somewhere in the mapbasic documentation (a one sentance 
statment), that custom functions won't work some places were "native" functions will.  
I don't remember where I read it or where the differences are, I just remember 
thinking that it was going to be a pain to work with custom functions because I wasn't 
going to remember the differences and someday its going to trap me.  It seems, custom 
functions are coded/run differently.   
 

        -----Original Message----- 
        From: Bill Thoen [mailto:[EMAIL PROTECTED] 
        Sent: Sat 7/10/2004 9:01 AM 
        To: [EMAIL PROTECTED] 
        Cc: 
        Subject: MI-L Updating fields with functions
        
        

        Updating table fields with functions is a much faster techique than
        stepping through a table record by record to change a field. I was curious
        to see how far the technique could be stretched and discovered that using
        a function in a select doesn't seem to work, but in an update, it works
        fine. Why is this? Anyone know?
        
        Here's a test program illustrating the problem:
        
        Declare Sub Main
        Declare Function Reverse (ByVal sName As String) As String
        
        Sub Main
        Dim sFile As String
        ' Open the States table and build a new table using STATES.State_Name
        ' passed to a function that returns a string. The string returned from
        ' that function will be used to populate a temporary table and a
        ' permanent one. Why does the temporary table not get filled, while
        ' rows are created?
        
          ' Set up and open the source table
          Close All
          sFile = FileOpenDlg ("", "States.Tab", "TAB",
              "Please open the STATES table")
          If sFile = "" Then
            Exit Sub
          End If
          Open Table sFile As STATES
        
          ' This works only rarely (but sometimes it does!)
          ' Usually all rows are blank.
          Select Reverse (State_Name) "emaN_etatS"
            From STATES Into TEMP NoSelect
        
          ' This does work
          Create Table PERM (
            emaN Char(20)
          )
          Insert Into PERM Select Reverse (State_Name) From STATES
          Commit Table PERM
        
          ' View the results
          Browse * From PERM
          Browse * From TEMP
        End Sub
        
        
        Function Reverse (
          ByVal sName As String) ' Input string
          As String              ' Returned word spelled backwards
        'Reverses letters in a string
        Dim sRevWord As String
        Dim i, j As Integer
        
          j = Len(sName)
          For i = j To 1 Step -1
            sRevWord = sRevWord + Mid$(sName, i, 1)
          Next
        
          Reverse = sRevWord
        End Function
        
        
        ---
        - Bill Thoen
        
        
        
        ---------------------------------------------------------------------
        List hosting provided by Directions Magazine | www.directionsmag.com |
        To unsubscribe, e-mail: [EMAIL PROTECTED]
        For additional commands, e-mail: [EMAIL PROTECTED]
        Message number: 12542
        
        

Reply via email to