************************************************** *-- Class: BooksAndAuthors *-- Program: BooksAndAuthors.prg * * CursorAdapter to provide access to the Microsoft * SQL Server data for books and authors * DEFINE CLASS booksandauthors AS cursoradapter SelectCmd = [SELECT TI.Title_id, TI.Title, AU.au_Lname, ] + ; [AU.au_Fname, TI.PubDate, ] + ; [TI.Price AS Price FROM pubs.dbo.Titles TI ] + ; [JOIN pubs.dbo.TitleAuthor TA ON TI.Title_id = TA.Title_id ] + ; [JOIN pubs.dbo.Authors AU ON TA.au_id = AU.au_id ] + ; [ORDER BY 1,2,3] Tables = [Titles] KeyFieldList = [title_id] UpdateNameList = "Title pubs.dbo.Titles.Title" UpdatableFieldList = [Title] Alias = "BooksAndAuthors" DataSourceType = "ODBC" CursorSchema = "Title_id C(6), Title C(120), Lname C(40), FName C(40), Pubdate T, Price Y" Name = "BooksAndAuthors" FetchAsNeeded = .T. AllowUpdate = .T. SendUpdates = .T. FUNCTION Init LOCAL lcConnection lcConnection = "driver=SQL Server; " + ; ";server=NYCPSJWBOOTH\VINCENT; " + ; "uid=***; pwd=***" This.DataSource = SQLSTRINGCONNECT(lcConnection) ENDFUNC ENDDEFINEI can query the data with the following;
ox = NEWOBJECT("BooksAndAuthors","c:\effective\application\prgs\booksandauthors.prg") ox.CursorFill() BROWSE lastAnd I see the browse window and can edit the title field on the first record. I move off of the first record without any error and then I execute;
?TABLEUPDATE(.t.,.t.,"BooksAndAuthors",laerror)And tableupdate returns -1, the array has one element with the value of -1 and an AERROR() show no error occurred.