Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Trying to come up with a view/CA model
Message
Information générale
Forum:
Visual FoxPro
Catégorie:
Base de données, Tables, Vues, Index et syntaxe SQL
Versions des environnements
Visual FoxPro:
VFP 9 SP1
OS:
Windows XP
Network:
Windows 2003 Server
Database:
MS SQL Server
Divers
Thread ID:
01410693
Message ID:
01410928
Vues:
38
>No, the problem is that you have RECORD in the CA and it execute UPDATE not INSERT:
>That works for me (w/o very hard testing):
>
>CLEAR
>CLOSE DATABASES ALL
>SET ASSERTS ON
>
>getOptionID = 1
>getMakeID   = 22
>getModelIDs = [_1_2_3]
>oCa = CREATEOBJECT([cadealeropts])
>IF oCa.CursorFill()
>   BROWSE NORMAL
>   IF NOT TABLEUPDATE(1, .t., oCa.Alias)
>      AERROR(aaaa)
>      CLEAR
>      DISPLAY MEMORY LIKE aaaa
>   ENDIF
>
>ELSE
>   AERROR(aaaa)
>   CLEAR
>   DISPLAY MEMORY LIKE aaaa
>ENDIF
>
>
>
>
>DEFINE CLASS cadealeropts AS cursoradapter
>       SelectCmd = "select DealerOpts.OptsID, NVL(DealerOpts.OptionID,?getOptionID) as OptionID,  NVL(DealerOpts.MakeID, ?getMakeID) as MakeID, "+;
>                           "Models.ModelID as ModelID, Models.MfgName, Models.Name as ModelName, "+;
>                           "Models.ModelNmbr as ModelNmbr,  Models.ModelYear as ModelYear, DealerOpts.Retail, DealerOpts.Cost, "+;
>                           "DealerOpts.Costline, DealerOpts.Type as cType, DealerOpts.StdOption "+;
>                           "from DealerOpts "+;
>                           "RIGHT JOIN Models ON DealerOpts.ModelID = Models.ModelID and DealerOpts.OptionID = ?getOptionID and "+;
>                                                "DealerOpts.MakeID = ?getMakeID where cast(Models.ModelID as varchar(12)) $ (?getModelIDs)"
>       CursorSchema = "OptsID I, OptionID I, MakeID I, ModelID I, MfgName C(40), ModelName C(65), "+;
>                      "ModelNmbr C(20), ModelYear C(40), Retail N(10, 2), Cost N(10, 2), Costline N(10, 2),"+;
>                      "cType C(12), StdOption L(1)"
>       Alias              = "curdealeropts"
>       DataSourceType     = "Native"
>       Flags              = 0
>       CompareMemo        = .T.
>       FetchMemo          = .F.
>       SendUpdates        = .T.
>       KeyFieldList       = "OPTSID"
>       Tables             = "DealerOpts"
>       UpdatableFieldList = "OPTIONID, MAKEID, MODELID, RETAIL, COST, COSTLINE, CTYPE, STDOPTION"
>       UpdateNameList     = "OPTSID DealerOpts.OPTSID,OPTIONID DealerOpts.OPTIONID, MAKEID DealerOpts.MAKEID,"+;
>                             "MODELID DealerOpts.MODELID, RETAIL DealerOpts.RETAIL, COST DealerOpts.COST, "+;
>                            "COSTLINE DealerOpts.COSTLINE, CTYPE DealerOpts.Type, STDOPTION DealerOpts.STDOPTION"
>       BreakOnError       = .T.
>       UseCursorSchema    = .T.
>       UseTransactions    = .T.
>       Name               = "cadealeropts"
>
>    PROCEDURE Init
>        set multilocks on
>        llReturn = dodefault()
>    ENDPROC
>    
>    PROCEDURE BeforeUpdate(cFldState, lForce, nUpdateType, cUpdateInsertCmd, cDeleteCmd)
>        IF ISNULL(EVALUATE(this.Alias +[.OPTSID]))
>           TEXT TO cUpdateInsertCmd NOSHOW TEXTMERGE PRETEXT 15
>                INSERT INTO DealerOpts (OptionID, MakeID, Retail, Cost, Costline, cType, StdOption, ModelID)
>                VALUES
>                (<<EVALUATE(this.Alias+[.OptionID])>>,
>                 <<EVALUATE(this.Alias+[.MakeID])>>,
>                 <<EVALUATE(this.Alias+[.Retail])>>,
>                 <<EVALUATE(this.Alias+[.Cost])>>,
>                 <<EVALUATE(this.Alias+[.Costline])>>,
>                 <<EVALUATE(this.Alias+[.cType])>>,
>                 <<EVALUATE(this.Alias+[.StdOption])>>,
>                 <<EVALUATE(this.Alias+[.ModelID])>>)
>           ENDTEXT
>        ENDIF
>    ENDPROC
>ENDDEFINE
>
>
>Just changed BeforeUpdate event.

It almost works, except that it gives the 'Syntax error' (probably because of cType and StdOption) fields. I'm wondering if we can use parameters approach constructing this and if there are some problems with it?
If it's not broken, fix it until it is.


My Blog
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform