Results 1 to 2 of 2
  1. #1
    Join Date
    Jun 2004
    Posts
    1

    Unanswered: Writing data to a FoxPro Memo Field with ASP form

    Help is greatly appreciated. Many Karma points will be awarded.

    I have an ASP form that inputs data into a FoxPro free table (dbf). The "details" field is a memo field where the user should be able to enter unlimited data. The form works great, except:

    1.) when there is a line break (enter) anywhere in the field
    2.) when you exceed 254 characters.

    I get this error:
    Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
    [Microsoft][ODBC Visual FoxPro Driver]Command contains unrecognized phrase/keyword.

    I understand that the ODBC driver is not swallowing my the line break correctly. In the post, the line break is: %0D%0A

    How could I replace the line break with something that the ODBC driver will eat? Or is there another solution? My code is as follows:

    Code:
    MM_editAction = CStr(Request("URL"))
    If (Request.QueryString <> "") Then
      MM_editAction = MM_editAction & "?" & Request.QueryString
    End If
    
    ' boolean to abort record edit
    MM_abortEdit = false
    
    ' query string to execute
    MM_editQuery = ""
    %>
    <%
    ' *** Insert Record: set variables
    
    If (CStr(Request("MM_insert")) <> "") Then
    
      MM_editConnection = MM_request1_STRING
      MM_editTable = "request1"
      MM_editRedirectUrl = "thanks.htm"
      MM_fieldsStr  = "UserName|value|Type|value|subject|value|DesTime|value|MaxTime|value|Priority|value|Details|value|datetime|value"
      MM_columnsStr = "from|',none,''|type|',none,''|subject|',none,''|destime|',none,''|maxtime|',none,''|priority|',none,''|details|',none,''|submitted|',none,''"
    	
      ' create the MM_fields and MM_columns arrays
      MM_fields = Split(MM_fieldsStr, "|")
      MM_columns = Split(MM_columnsStr, "|")
      
      ' set the form values
      For i = LBound(MM_fields) To UBound(MM_fields) Step 2
        MM_fields(i+1) = CStr(Request.Form(MM_fields(i)))
      Next
    
      ' append the query string to the redirect URL
      If (MM_editRedirectUrl <> "" And Request.QueryString <> "") Then
        If (InStr(1, MM_editRedirectUrl, "?", vbTextCompare) = 0 And Request.QueryString <> "") Then
          MM_editRedirectUrl = MM_editRedirectUrl & "?" & Request.QueryString
        Else
          MM_editRedirectUrl = MM_editRedirectUrl & "&" & Request.QueryString
        End If
      End If
    
    End If
    %>
    <%
    ' *** Insert Record: construct a sql insert statement and execute it
    
    If (CStr(Request("MM_insert")) <> "") Then
    
      ' create the sql insert statement
      MM_tableValues = ""
      MM_dbValues = ""
      For i = LBound(MM_fields) To UBound(MM_fields) Step 2
        FormVal = MM_fields(i+1)
        MM_typeArray = Split(MM_columns(i+1),",")
        Delim = MM_typeArray(0)
        If (Delim = "none") Then Delim = ""
        AltVal = MM_typeArray(1)
        If (AltVal = "none") Then AltVal = ""
        EmptyVal = MM_typeArray(2)
        If (EmptyVal = "none") Then EmptyVal = ""
        If (FormVal = "") Then
          FormVal = EmptyVal
        Else
          If (AltVal <> "") Then
            FormVal = AltVal
          ElseIf (Delim = "'") Then  ' escape quotes
            FormVal = "'" & Replace(FormVal,"'","''") & "'"
          Else
            FormVal = Delim + FormVal + Delim
          End If
        End If
        If (i <> LBound(MM_fields)) Then
          MM_tableValues = MM_tableValues & ","
          MM_dbValues = MM_dbValues & ","
        End if
        MM_tableValues = MM_tableValues & MM_columns(i)
        MM_dbValues = MM_dbValues & FormVal
      Next
      MM_editQuery = "insert into " & MM_editTable & " (" & MM_tableValues & ") values (" & MM_dbValues & ")"
    
      If (Not MM_abortEdit) Then
        ' execute the insert
        Set MM_editCmd = Server.CreateObject("ADODB.Command")
        MM_editCmd.ActiveConnection = MM_editConnection
        MM_editCmd.CommandText = MM_editQuery
        MM_editCmd.Execute
        MM_editCmd.ActiveConnection.Close

  2. #2
    Join Date
    Jul 2003
    Location
    SoCal
    Posts
    721
    It sounds like 254 chars is the limit on that field.. but I don't know FoxPro. It could also be the driver interfacing to the FoxPro DB. As for the line break, you could do something like this:

    Code:
    Dim newLineCode
    Dim myString
    
    newLineCode = "<BR>"
    myString = Request.Form("myTextbox")
    
    myString = Replace(myString, vbCRLF, newLineCode)
    Then when you read it from the DB, you can swap the last two params on that Replace, and it will convert it back to a CR and LF.

    Dreamweaver always makes the code more difficult to read than it should be...
    That which does not kill me postpones the inevitable.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •