Solved

Key Field Problem

Posted on 2000-05-01
8
154 Views
Last Modified: 2013-12-24
Running Cold Fusion 4.0 with MS-Access on a stand-alone test box, I am trying to run a DoEdit but I keep getting an error saying that I have not identified a primary key in the table. I have done this, deleted and re-entered the database in the ODBC datasources and verified it. I still get this error!
Any suggestions?
0
Comment
Question by:jacquard
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
8 Comments
 
LVL 2

Expert Comment

by:paulkd
ID: 2767170
Hi jacquard,

I've never heard of a DoEdit, but it sounds interesting. Is it an Access 2000 function?
0
 
LVL 5

Expert Comment

by:nathans
ID: 2768032
There is no ColdFusion Function called DoEdit what are you trying to do that is not working?

Nathan Stanford
Mr. ColdFusion
ColdFusion Tips Plus
www.nsnd.com
0
 

Author Comment

by:jacquard
ID: 2768522
Sorry, what I meant to type was that I am trying to do an edit of some records using CFUPDATE. The "DoEdit" is just a call.

0
Webinar: Aligning, Automating, Winning

Join Dan Russo, Senior Manager of Operations Intelligence, for an in-depth discussion on how Dealertrack, leading provider of integrated digital solutions for the automotive industry, transformed their DevOps processes to increase collaboration and move with greater velocity.

 
LVL 2

Expert Comment

by:dlewis9
ID: 2769516
If your table has a primary key, then you must send the primary key field value into the CFUPDATE as well..

For example:

PAGE1.CFM

<FORM ACTION="page2.cfm" METHOD="POST">
      <INPUT TYPE="Hidden" NAME="userid" VALUE="1">
      <INPUT TYPE="Hidden" NAME="password" VALUE="test">
      <INPUT TYPE="Submit">
</FORM>

PAGE2.CFM

<CFUPDATE DATASOURCE="mydatasource" TABLENAME="mytablename" DBTYPE="ODBC" FORMFIELDS="userid, password">

If you don't want to use a primary key, you should be able to get around this limitation by just using CFQUERY with an update statement:

<!--- Update all records --->
<CFQUERY NAME="myquery" DATASOURCE="mydatasource">

UPDATE mytablename
SET password = 'test'

</CFQUERY>

I hope that is on the right track of what you are asking..if not, can you post some sample code?
0
 
LVL 1

Expert Comment

by:cfmrulez
ID: 2785858
Hiz!

Jacquard, can you show us the exact error message are you getting. It's also a plus if you can show us the table structure and the cfm code your are getting in trouble.

Thanks,
cfmrulez!
0
 

Author Comment

by:jacquard
ID: 2793133
OK...I think I may have stumbled onto the problem but in doing so uncovered another. My original query read:
<CFUPDATE DATASOURCE="training" TABLENAME="RJITF Courses" dbtype="odbc">

<CFQUERY NAME="GetData" DATASOURCE="training">
SELECT *
FROM RJITF Courses
ORDER BY RecordID
</CFQUERY>

I found that Cold Fusion didn't like spaces in the "TABLENAME" field nor did it like brackets, quotes, or anything else.

After renaming the table to "RJITFCourses" I now get the error:
"ODBC Error Code=22005 (Error in assignment)"

In the debug mode it shows the SQL as:
SQL="UPDATE RJITFCourses SET 'DURATION' =?, 'TARGET'=?, 'PLACE'=?, 'COURSENAME'=?, 'CODE'=?, 'REP_CODE'=?, 'COURSEDESC'=?, WHERE 'RecordID'=?"

Any help before I lose more hair?

thanks

0
 
LVL 9

Accepted Solution

by:
Dain_Anderson earned 100 total points
ID: 2793873
You may want to use a standard SQL query instead of the CFUPDATE. It's much easier
to debug due to being able to see what's going on:

<CFQUERY NAME="updateData" DATASOURCE="training" DEBUG>
    UPDATE      RJITFCourses
    SET         DURATION = '#FORM.duration#',
                TARGET = '#FORM.TARGET#',
                PLACE = '#FORM.PLACE#',
                COURSENAME = '#FORM.COURSENAME#',
                CODE = '#FORM.CODE#',
                REP_CODE = '#FORM.REP_CODE#',
                COURSEDESC = '#FORM.coursedesc#'
    WHERE       RecordID = '#FORM.RecordID#'
</CFQUERY>

Be sure to remove the single quotes around the #FORM.variable# if the destination field is numeric. So, if "REP_CODE" is a numeric field in Access, then you would use:

    REP_CODE = #FORM.REP_CODE#
   
....instead of '#FORM.REP_CODE#'

I'm not sure what your form variable names are, so the above were just guesses.

Hope that helps.
0
 

Author Comment

by:jacquard
ID: 2820432
Although this answer did not resolve the problem, it did put me on the right track to finding the solution myself.

The problem was an error in my code where I included a "hidden" field statement where I shouldn't have.

Many thanks to Dain and everyone else who provided input.

Mike
0

Featured Post

Is Your DevOps Pipeline Leaking?

Is your CI/CD pipeline a hodge-podge of randomly connected tools? You’ve likely got a tool to fix one problem & then a different tool to fix another, resulting in a cluster of tools with overlapping functionality. Learn how to optimize your pipeline with Gartner's recommendations

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Tool to email me when a website changes 29 148
Use System DSN 6 95
htaccess restrict subdomain 4 147
Web server settings related to keepalive 1 134
Have you ever sent email via ColdFusion and thought of tracking this mail to capture the exact date and time when the message was opened ?  If yes, then this article is for you ! First we need a table user_email with columns user_id , email , sub…
Article by: kevp75
Hey folks, 'bout time for me to come around with a little tip. Thanks to IIS 7.5 Extensions and Microsoft (well... really Windows 8, and IIS 8 I guess...), we can now prime our Application Pools, when IIS starts. Now, though it would be nice t…
In an interesting question (https://www.experts-exchange.com/questions/29008360/) here at Experts Exchange, a member asked how to split a single image into multiple images. The primary usage for this is to place many photographs on a flatbed scanner…
Finding and deleting duplicate (picture) files can be a time consuming task. My wife and I, our three kids and their families all share one dilemma: Managing our pictures. Between desktops, laptops, phones, tablets, and cameras; over the last decade…

751 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question