Wrox Programmer Forums
|
Classic ASP Databases Discuss using ASP 3 to work with data in databases, including ASP Database Setup issues from the old P2P forum on this specific subtopic. See also the book forum Beginning ASP.NET Databases for questions specific to that book. NOT for ASP.NET 1.0, 1.1, or 2.0.
Welcome to the p2p.wrox.com Forums.

You are currently viewing the Classic ASP Databases section of the Wrox Programmer to Programmer discussions. This is a community of software programmers and website developers including Wrox book authors and readers. New member registration was closed in 2019. New posts were shut off and the site was archived into this static format as of October 1, 2020. If you require technical support for a Wrox book please contact http://hub.wiley.com
 
Old February 14th, 2006, 06:22 AM
Registered User
 
Join Date: Feb 2006
Posts: 5
Thanks: 0
Thanked 0 Times in 0 Posts
Default How do I get rid of this comma?!?!?!?!

I am relatively new to ASP but this has been driving me crazy. I can add and delete records but cannot update them.
With dreamweaver I have designed a page on www.cyads.com.cy/updateantiques.asp using Access as my database.

This is the code:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="28597"%>

<%
' *** Edit Operations: declare variables

Dim MM_editAction
Dim MM_abortEdit
Dim MM_editQuery
Dim MM_editCmd

Dim MM_editConnection
Dim MM_editTable
Dim MM_editRedirectUrl
Dim MM_editColumn
Dim MM_recordId

Dim MM_fieldsStr
Dim MM_columnsStr
Dim MM_fields
Dim MM_columns
Dim MM_typeArray
Dim MM_formVal
Dim MM_delim
Dim MM_altVal
Dim MM_emptyVal
Dim MM_i

MM_editAction = CStr(Request.ServerVariables("SCRIPT_NAME"))
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 = ""
%>
<%
' *** Update Record: set variables

If (CStr(Request("MM_update")) = "form1" And CStr(Request("MM_recordId")) <> "") Then

  MM_editConnection = MM_conCyAds_STRING
  MM_editTable = "Antiques"
  MM_editColumn = "ID"
  MM_recordId = "" + Request.Form("MM_recordId") + ""
  MM_editRedirectUrl = ""
  MM_fieldsStr = "ID|value|DateInserted|value|Item|value|Descriptio n|value|Sold|value|Photo1|value|Photo2|value|Askin gprice|value|SellerName|value|SellerEmail|value|Se llerPhone|value|w|value"
  MM_columnsStr = "ID|none,none,NULL|DateInserted|',none,NULL|Item|' ,none,''|Description|',none,''|Sold|none,1,0|Photo 1|',none,''|Photo2|',none,''|Askingprice|none,none ,NULL|SellerName|',none,''|SellerEmail|',none,''|S ellerPhone|',none,''|w|none,1,0"

  ' create the MM_fields and MM_columns arrays
  MM_fields = Split(MM_fieldsStr, "|")
  MM_columns = Split(MM_columnsStr, "|")

  ' set the form values
  For MM_i = LBound(MM_fields) To UBound(MM_fields) Step 2
    MM_fields(MM_i+1) = CStr(Request.Form(MM_fields(MM_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
%>
<%
' *** Update Record: construct a sql update statement and execute it

If (CStr(Request("MM_update")) <> "" And CStr(Request("MM_recordId")) <> "") Then

  ' create the sql update statement
  MM_editQuery = "update " & MM_editTable & " set "
  For MM_i = LBound(MM_fields) To UBound(MM_fields) Step 2
    MM_formVal = MM_fields(MM_i+1)
    MM_typeArray = Split(MM_columns(MM_i+1),",")
    MM_delim = MM_typeArray(0)
    If (MM_delim = "none") Then MM_delim = ""
    MM_altVal = MM_typeArray(1)
    If (MM_altVal = "none") Then MM_altVal = ""
    MM_emptyVal = MM_typeArray(2)
    If (MM_emptyVal = "none") Then MM_emptyVal = ""
    If (MM_formVal = "") Then
      MM_formVal = MM_emptyVal
    Else
      If (MM_altVal <> "") Then
        MM_formVal = MM_altVal
      ElseIf (MM_delim = "'") Then ' escape quotes
        MM_formVal = "'" & Replace(MM_formVal,"'","''") & "'"
      Else
        MM_formVal = MM_delim + MM_formVal + MM_delim
      End If
    End If
    If (MM_i <> LBound(MM_fields)) Then
      MM_editQuery = MM_editQuery & ","
    End If
    MM_editQuery = MM_editQuery & MM_columns(MM_i) & " = " & MM_formVal
  Next
  MM_editQuery = MM_editQuery & " where " & MM_editColumn & " = " & MM_recordId

  If (Not MM_abortEdit) Then
    ' execute the update
    Set MM_editCmd = Server.CreateObject("ADODB.Command")
    MM_editCmd.ActiveConnection = MM_editConnection
    MM_editCmd.CommandText = MM_editQuery
    MM_editCmd.Execute
    MM_editCmd.ActiveConnection.Close

    If (MM_editRedirectUrl <> "") Then
      Response.Redirect(MM_editRedirectUrl)
    End If
  End If

End If
%>

<%
Dim rsAntiques
Dim rsAntiques_numRows

Set rsAntiques = Server.CreateObject("ADODB.Recordset")
rsAntiques.ActiveConnection = MM_conCyAds_STRING
rsAntiques.Source = "SELECT * FROM Antiques"
rsAntiques.CursorType = 0
rsAntiques.CursorLocation = 2
rsAntiques.LockType = 1
rsAntiques.Open()

rsAntiques_numRows = 0
%>
<%
' *** Recordset Stats, Move To Record, and Go To Record: declare stats variables

Dim rsAntiques_total
Dim rsAntiques_first
Dim rsAntiques_last

' set the record count
rsAntiques_total = rsAntiques.RecordCount

' set the number of rows displayed on this page
If (rsAntiques_numRows < 0) Then
  rsAntiques_numRows = rsAntiques_total
Elseif (rsAntiques_numRows = 0) Then
  rsAntiques_numRows = 1
End If

' set the first and last displayed record
rsAntiques_first = 1
rsAntiques_last = rsAntiques_first + rsAntiques_numRows - 1

' if we have the correct record count, check the other stats
If (rsAntiques_total <> -1) Then
  If (rsAntiques_first > rsAntiques_total) Then
    rsAntiques_first = rsAntiques_total
  End If
  If (rsAntiques_last > rsAntiques_total) Then
    rsAntiques_last = rsAntiques_total
  End If
  If (rsAntiques_numRows > rsAntiques_total) Then
    rsAntiques_numRows = rsAntiques_total
  End If
End If
%>
<%
Dim MM_paramName
%>
<%
' *** Move To Record and Go To Record: declare variables

Dim MM_rs
Dim MM_rsCount
Dim MM_size
Dim MM_uniqueCol
Dim MM_offset
Dim MM_atTotal
Dim MM_paramIsDefined

Dim MM_param
Dim MM_index

Set MM_rs = rsAntiques
MM_rsCount = rsAntiques_total
MM_size = rsAntiques_numRows
MM_uniqueCol = ""
MM_paramName = ""
MM_offset = 0
MM_atTotal = false
MM_paramIsDefined = false
If (MM_paramName <> "") Then
  MM_paramIsDefined = (Request.QueryString(MM_paramName) <> "")
End If
%>
<%
' *** Move To Record: handle 'index' or 'offset' parameter

if (Not MM_paramIsDefined And MM_rsCount <> 0) then

  ' use index parameter if defined, otherwise use offset parameter
  MM_param = Request.QueryString("index")
  If (MM_param = "") Then
    MM_param = Request.QueryString("offset")
  End If
  If (MM_param <> "") Then
    MM_offset = Int(MM_param)
  End If

  ' if we have a record count, check if we are past the end of the recordset
  If (MM_rsCount <> -1) Then
    If (MM_offset >= MM_rsCount Or MM_offset = -1) Then ' past end or move last
      If ((MM_rsCount Mod MM_size) > 0) Then ' last page not a full repeat region
        MM_offset = MM_rsCount - (MM_rsCount Mod MM_size)
      Else
        MM_offset = MM_rsCount - MM_size
      End If
    End If
  End If

  ' move the cursor to the selected record
  MM_index = 0
  While ((Not MM_rs.EOF) And (MM_index < MM_offset Or MM_offset = -1))
    MM_rs.MoveNext
    MM_index = MM_index + 1
  Wend
  If (MM_rs.EOF) Then
    MM_offset = MM_index ' set MM_offset to the last possible record
  End If

End If
%>
<%
' *** Move To Record: if we dont know the record count, check the display range

If (MM_rsCount = -1) Then

  ' walk to the end of the display range for this page
  MM_index = MM_offset
  While (Not MM_rs.EOF And (MM_size < 0 Or MM_index < MM_offset + MM_size))
    MM_rs.MoveNext
    MM_index = MM_index + 1
  Wend

  ' if we walked off the end of the recordset, set MM_rsCount and MM_size
  If (MM_rs.EOF) Then
    MM_rsCount = MM_index
    If (MM_size < 0 Or MM_size > MM_rsCount) Then
      MM_size = MM_rsCount
    End If
  End If

  ' if we walked off the end, set the offset based on page size
  If (MM_rs.EOF And Not MM_paramIsDefined) Then
    If (MM_offset > MM_rsCount - MM_size Or MM_offset = -1) Then
      If ((MM_rsCount Mod MM_size) > 0) Then
        MM_offset = MM_rsCount - (MM_rsCount Mod MM_size)
      Else
        MM_offset = MM_rsCount - MM_size
      End If
    End If
  End If

  ' reset the cursor to the beginning
  If (MM_rs.CursorType > 0) Then
    MM_rs.MoveFirst
  Else
    MM_rs.Requery
  End If

  ' move the cursor to the selected record
  MM_index = 0
  While (Not MM_rs.EOF And MM_index < MM_offset)
    MM_rs.MoveNext
    MM_index = MM_index + 1
  Wend
End If
%>
<%
' *** Move To Record: update recordset stats

' set the first and last displayed record
rsAntiques_first = MM_offset + 1
rsAntiques_last = MM_offset + MM_size

If (MM_rsCount <> -1) Then
  If (rsAntiques_first > MM_rsCount) Then
    rsAntiques_first = MM_rsCount
  End If
  If (rsAntiques_last > MM_rsCount) Then
    rsAntiques_last = MM_rsCount
  End If
End If

' set the boolean used by hide region to check if we are on the last record
MM_atTotal = (MM_rsCount <> -1 And MM_offset + MM_size >= MM_rsCount)
%>
<%
' *** Go To Record and Move To Record: create strings for maintaining URL and Form parameters

Dim MM_keepNone
Dim MM_keepURL
Dim MM_keepForm
Dim MM_keepBoth

Dim MM_removeList
Dim MM_item
Dim MM_nextItem

' create the list of parameters which should not be maintained
MM_removeList = "&index="
If (MM_paramName <> "") Then
  MM_removeList = MM_removeList & "&" & MM_paramName & "="
End If

MM_keepURL=""
MM_keepForm=""
MM_keepBoth=""
MM_keepNone=""

' add the URL parameters to the MM_keepURL string
For Each MM_item In Request.QueryString
  MM_nextItem = "&" & MM_item & "="
  If (InStr(1,MM_removeList,MM_nextItem,1) = 0) Then
    MM_keepURL = MM_keepURL & MM_nextItem & Server.URLencode(Request.QueryString(MM_item))
  End If
Next

' add the Form variables to the MM_keepForm string
For Each MM_item In Request.Form
  MM_nextItem = "&" & MM_item & "="
  If (InStr(1,MM_removeList,MM_nextItem,1) = 0) Then
    MM_keepForm = MM_keepForm & MM_nextItem & Server.URLencode(Request.Form(MM_item))
  End If
Next

' create the Form + URL string and remove the intial '&' from each of the strings
MM_keepBoth = MM_keepURL & MM_keepForm
If (MM_keepBoth <> "") Then
  MM_keepBoth = Right(MM_keepBoth, Len(MM_keepBoth) - 1)
End If
If (MM_keepURL <> "") Then
  MM_keepURL = Right(MM_keepURL, Len(MM_keepURL) - 1)
End If
If (MM_keepForm <> "") Then
  MM_keepForm = Right(MM_keepForm, Len(MM_keepForm) - 1)
End If

' a utility function used for adding additional parameters to these strings
Function MM_joinChar(firstItem)
  If (firstItem <> "") Then
    MM_joinChar = "&"
  Else
    MM_joinChar = ""
  End If
End Function
%>
<%
' *** Move To Record: set the strings for the first, last, next, and previous links

Dim MM_keepMove
Dim MM_moveParam
Dim MM_moveFirst
Dim MM_moveLast
Dim MM_moveNext
Dim MM_movePrev

Dim MM_urlStr
Dim MM_paramList
Dim MM_paramIndex
Dim MM_nextParam

MM_keepMove = MM_keepBoth
MM_moveParam = "index"

' if the page has a repeated region, remove 'offset' from the maintained parameters
If (MM_size > 1) Then
  MM_moveParam = "offset"
  If (MM_keepMove <> "") Then
    MM_paramList = Split(MM_keepMove, "&")
    MM_keepMove = ""
    For MM_paramIndex = 0 To UBound(MM_paramList)
      MM_nextParam = Left(MM_paramList(MM_paramIndex), InStr(MM_paramList(MM_paramIndex),"=") - 1)
      If (StrComp(MM_nextParam,MM_moveParam,1) <> 0) Then
        MM_keepMove = MM_keepMove & "&" & MM_paramList(MM_paramIndex)
      End If
    Next
    If (MM_keepMove <> "") Then
      MM_keepMove = Right(MM_keepMove, Len(MM_keepMove) - 1)
    End If
  End If
End If

' set the strings for the move to links
If (MM_keepMove <> "") Then
  MM_keepMove = MM_keepMove & "&"
End If

MM_urlStr = Request.ServerVariables("URL") & "?" & MM_keepMove & MM_moveParam & "="

MM_moveFirst = MM_urlStr & "0"
MM_moveLast = MM_urlStr & "-1"
MM_moveNext = MM_urlStr & CStr(MM_offset + MM_size)
If (MM_offset - MM_size < 0) Then
  MM_movePrev = MM_urlStr & "0"
Else
  MM_movePrev = MM_urlStr & CStr(MM_offset - MM_size)
End If
%>
<html>
<head>
<title>Update Antiques</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-7">
</head>

<body>
<form method="POST" action="<%=MM_editAction%>" name="form1">
  <div align="center"><strong>Antiques
    &amp; Collectibles </strong></div>
  <table align="center">
    .................................
  <input type="hidden" name="MM_update" value="form1">
  <input type="hidden" name="MM_recordId" value="<%= rsAntiques.Fields.Item("Sold").Value %>">
  <input type="hidden" name="MM_recordId" value="<%= rsAntiques.Fields.Item("ID").Value %>">
</form>
<p>&nbsp;</p>
</body>
</html>
<%
rsAntiques.Close()
%>



When I try to update a record (to mark the first record as "Sold"), I get this error:


Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Syntax error (comma) in query expression 'ID = False, 48'.

/updateantiques.asp, line 111



I cannot seem to get rid of it. Can anyone please help?
Thanks.

 
Old February 14th, 2006, 08:21 AM
Authorized User
 
Join Date: Feb 2006
Posts: 35
Thanks: 0
Thanked 0 Times in 0 Posts
Default

Hi !

I think That you don't pass ID correct ! 'ID = False, 48'. --- ID=48

First! write your SQL Update

make this code !

...
response.write (MM_editQuery)
response.end

  If (Not MM_abortEdit) Then
    ' execute the update
    Set MM_editCmd = Server.CreateObject("ADODB.Command")
    MM_editCmd.ActiveConnection = MM_editConnection
    MM_editCmd.CommandText = MM_editQuery
....
...

 I belive The problem in this code !!

 MM_fieldsStr = "ID|value|DateInserted|value|Item|value|Descriptio n|value|Sold|value|Photo1|value|Photo2|value|Askin gprice|value|SellerName|value|SellerEmail|value|Se llerPhone|value|w|value"
  MM_columnsStr = "ID|none,none,NULL|DateInserted|',none,NULL|Item|' ,none,''|Description|',none,''|Sold|none,1,0|Photo 1|',none,''|Photo2|',none,''|Askingprice|none,none ,NULL|SellerName|',none,''|SellerEmail|',none,''|S ellerPhone|',none,''|w|none,1,0"

Steweb



I don’t Speak English very well, excuse me !

www.steweb.net
 
Old February 14th, 2006, 08:50 AM
Registered User
 
Join Date: Feb 2006
Posts: 5
Thanks: 0
Thanked 0 Times in 0 Posts
Default

Hello Steweb,
Thanks for the quick reply.
I believe you are correct saying that the problem is in the lines you say:

MM_fieldsStr = "ID|value|DateInserted|value|Item|value|Descriptio n|value|Sold|value|Photo1|value|Photo2|value|Askin gprice|value|SellerName|value|SellerEmail|value|Se llerPhone|value|w|value"
  MM_columnsStr = "ID|none,none,NULL|DateInserted|',none,NULL|Item|' ,none,''|Description|',none,''|Sold|none,1,0|Photo 1|',none,''|Photo2|',none,''|Askingprice|none,none ,NULL|SellerName|',none,''|SellerEmail|',none,''|S ellerPhone|',none,''|w|none,1,0"

The problem is that I have tried many variations in changing the code and all I have accomplished is to get a different error message.

I have also added the "response.write" section that you say but that doesn't seem to provide any help.

I will continue trying but if you can think of something, I would really appreciate it.

Harry

PS. Your English is perfect.

 
Old February 14th, 2006, 11:22 AM
Authorized User
 
Join Date: Feb 2006
Posts: 35
Thanks: 0
Thanked 0 Times in 0 Posts
Default

Thanks ! But I believe you are crazy saying that my english is perfect !:D


Run you asp page http://www.cyads.com.cy/updateantiques.asp

After make that code
...
response.write ("This is SQL update !:" &MM_editQuery)
response.end
...

Save a page and no reload page !
Click update record !

You must see on video The SQL

Post

Steweb







www.steweb.net
 
Old February 15th, 2006, 04:44 AM
Registered User
 
Join Date: Feb 2006
Posts: 5
Thanks: 0
Thanked 0 Times in 0 Posts
Default

Hi Steweb,
Thanks for trying to help.
Unfortunately, I couldn't make it work. The strange thing is that I am not using ANY "WHERE" clauses in my code. My recordset is SELECT * from Antiques (my table name).
I think i will skip it and try from the begining taking it one step at a time.
Thank you again.
Harry

 
Old February 15th, 2006, 04:53 AM
Registered User
 
Join Date: Feb 2006
Posts: 5
Thanks: 0
Thanked 0 Times in 0 Posts
Default

Hello Steweb,
Thank you for trying to help me.
Unfortunately, the code you sent me does not show me where the error originates from. The strange thing is that I am not using any "WHERE" clauses in my recordset. My recordset is simple
"SELECT * from Antiques" (Antiques is the table)
I think I will start from scratch and rebuild it to see where it can have gone wrong.
Thank you again.
Harry

 
Old February 15th, 2006, 08:17 AM
Authorized User
 
Join Date: Feb 2006
Posts: 35
Thanks: 0
Thanked 0 Times in 0 Posts
Default

Hi Harry !

..When you update record your SQL is

MM_editConnection = MM_conCyAds_STRING
MM_editTable = "Antiques"
MM_editColumn = "ID"
MM_recordId = "" + Request.Form("MM_recordId") + ""....
...

MM_editQuery = MM_editQuery & " where " & MM_editColumn & " = " & MM_recordId

I think that is no correct inser in your SQL parameter ID because is unique !

If you want try again !

MM_fieldsStr = "DateInserted|value|Item|value|Description|value|S old|value|Photo1|value|Photo2|value|Askingprice|va lue|SellerName|value|SellerEmail|value|SellerPhone |value|w|value"
MM_columnsStr = "DateInserted|',none,NULL|Item|',none,''|Descripti on|',none,''|Sold|none,1,0|Photo1|',none,''|Photo2 |',none,''|Askingprice|none,none,NULL|SellerName|' ,none,''|SellerEmail|',none,''|SellerPhone|',none, ''|w|none,1,0"


No ! parameter ID fields(ID|value) and columns (ID|none,none,NULL|)

try again !

Ciao Steweb




www.steweb.net
 
Old February 15th, 2006, 10:35 AM
Registered User
 
Join Date: Feb 2006
Posts: 5
Thanks: 0
Thanked 0 Times in 0 Posts
Default

Hello again Steweb,
Sorry it takes time to answer but i am not always in the office.
Your suggestions did not work unfortunately. I have a Dreamweaver extension call MX Kollection which I recently bought. I will try with the wizard it has to see if it helps. I am begining to realize that there is something seriously wrong with the recordsets and the links between them.
Thank you again Steweb. I know who to call when I have trouble with ASP.
By the way, you have a very good site.

 
Old February 15th, 2006, 01:24 PM
Friend of Wrox
 
Join Date: Jul 2003
Posts: 599
Thanks: 6
Thanked 3 Times in 3 Posts
Default

Please use Steweb's suggestion and write the SQL statement to the page.

response.write("This is SQL update !:" &MM_editQuery)
response.end

Then you can see exactly why the page is failing. You're own suggestion to write the page from scratch is a good idea. Even better if you don't use Dreamweaver. Its too hard to figure out what Dreavweaver is doing. It looks like you're just trying to get the values from the querystring and update the database. It usually doesn't take that much code to do that type of thing.



 
Old February 15th, 2006, 08:18 PM
Authorized User
 
Join Date: Feb 2006
Posts: 35
Thanks: 0
Thanked 0 Times in 0 Posts
Default

Thanks rstelma !

...You are my voice :)


Ciao Steweb





www.steweb.net





Similar Threads
Thread Thread Starter Forum Replies Last Post
How do you get Rid of quotes hewstone999 Access VBA 1 April 15th, 2008 10:42 AM
How to get rid of everything except startup form. biglazy Access 9 March 23rd, 2006 07:33 PM
How to get rid of this comma!!?! gilgalbiblewheel Classic ASP Databases 15 August 8th, 2005 06:41 PM
Get rid of the "You're about to delete ... " msg. dlamarche Access 3 February 23rd, 2005 02:51 PM
how to get rid of &nsbp; Lee8mm VB.NET 0 July 21st, 2003 07:56 AM





Powered by vBulletin®
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Copyright (c) 2020 John Wiley & Sons, Inc.