Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations SkipVought on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

CursorAdapter--Updating Two Tables

Status
Not open for further replies.

gaelin

Technical User
Jan 13, 2004
35
0
0
US
When I attempt to update two tables using CursorAdapter I get an error message that states:

"No key columns are specified for update table FMER_Companies. Use the keyfield list property of the cursor"

I list two key fields, the pc_id for the FMER_PrimeContract table and the company_id for the FMER_companies table. Why then the error?


Code:

PUBLIC loCursor AS CURSORADAPTER, laErrors[1]
loCursor = CREATEOBJECT("CursorAdapter")

WITH loCursor
.DATASOURCETYPE = [ODBC]
.DATASOURCE = SQLSTRINGCONNECT(lcDSNLess)
.ALIAS = 'curPrime'
.SELECTCMD = "Select fmer_companies.longname, fmer_companies.shortname, " + ;
"fmer_PrimeContracts.ContractNo, fmer_PrimeContracts.ContractType, " + ;
"fmer_PrimeContracts.Company_id, fmer_PrimeContracts.pc_id " + ;
"from fmer_primecontracts, fmer_companies " + ;
"where fmer_companies.company_id = fmer_PrimeContracts.Company_id " + ;
"order by contractno"
.SENDUPDATES = .T.
.TABLES = 'FMER_PrimeContracts, FMER_companies'
.KEYFIELDLIST = 'PC_id, company_id'
.UPDATABLEFIELDLIST = 'Pc_id, ContractNo, ContractType, Company_id, Longname, Shortname'
.UPDATENAMELIST = 'PC_ID fmer_primecontracts.pc_id, CONTRACTNO fmer_primecontracts.contractno, ' + ;
'CONTRACTTYPE fmer_primecontracts.contracttype, COMPANY_ID fmer_primecontracts.company_id, ' + ;
'LONGNAME fmer_companies.longname, SHORTNAME fmer_companies.shortname'
.ALLOWINSERT = .T.
.ALLOWUPDATE = .T.
.ALLOWDELETE = .T.
.BUFFERMODEOVERRIDE = 5

IF .CURSORFILL()
WITH THISFORM
.grdPrime.RECORDSOURCE = ""
LOCATE
.inRecno = 1
.grdPrime.RECORDSOURCE = "curPrime"
.grdPrime.COLUMNCOUNT = 4
.grdset()
.grdPrime.SETALL("DynamicForeColor", ;
"IIF(recno([curPrime])=THISFORM.inRecno,rgb(0,0,0),rgb(0,0,0))", ;
"COLUMN")
.grdPrime.SETALL("DynamicBackColor", ;
"IIF(recno([curPrime])=THISFORM.inRecno,rgb(255,255,0),rgb(255,255,255))", ;
"COLUMN")

.grdPrime.SETFOCUS()
ENDWITH
ELSE
IF AERROR(laErrors) > 0
MESSAGEBOX(laErrors[2])
SET STEP ON
ENDIF
ENDIF
ENDWITH
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top