Subject | RE: [IBO] Re: Posting a second record to a Dataset linked to a TIB_Grid |
---|---|
Author | Alan McDonald |
Post date | 2005-10-06T21:23:47Z |
> > in the query component, is there any SQL in the SQL update orfor future reference. Double click on the query component to being up the
> insert edit box?
> Alan, I am not sure what is SQL update or insert edit box, if you
> mean EditSQL and InsertSQL IB_Query's properties, they are ''
query editor. You may see something there that you haven't yet seen
Alan
>
> --- In IBObjects@yahoogroups.com, "Alan McDonald" <alan@m...> wrote:
> > >
> > > Hi Helen, as you asked:
> > >
> > > IB_QueryConta
> > > KeyLinks
> > > Conta.cct_ciireg
> > > Conta.cct_ident
> > > (these 2 fields are table primary key)
> > > RequestLive property is TRUE
> > >
> > > This is from TIB_Monitor:
> > >
> > > SELECT * FROM Conta WHERE
> > > cct_ciireg = '10010001'
> > > AND cct_mae = 1004
> > > ORDER BY cct_conta ASC
> > >
> > > PLAN SORT ((CONTA INDEX (IX_CONTA2)))
> > >
> > > FIELDS = [ Version 1 SQLd 13 SQLn 30
> > > CONTA.CCT_CIIREG[CCT_CIIREG] = <NIL>
> > > CONTA.CCT_IDENT = <NIL>
> > > CONTA.CCT_MAE = <NIL>
> > > CONTA.CCT_TIPO = <NIL>
> > > CONTA.CCT_CONTA = <NIL>
> > > CONTA.CCT_CUSCOD = <NIL>
> > > CONTA.CCT_TITULO = <NIL>
> > > CONTA.CCT_CRIACAO = <NIL>
> > > CONTA.CCT_GRAU = <NIL>
> > > CONTA.CCT_ORDEM = <NIL>
> > > CONTA.CCT_RATEIO = <NIL>
> > > CONTA.CCT_CHAT = <NIL>
> > > CONTA.CCT_CHAP = <NIL> ]
> > >
> > >
> > > INSERT INTO CONTA
> > > ( CCT_CIIREG
> > > , CCT_IDENT
> > > , CCT_MAE
> > > , CCT_CONTA
> > > , CCT_TITULO
> > > , CCT_TIPO
> > > , CCT_CUSCOD
> > > , CCT_ORDEM
> > > , CCT_RATEIO
> > > , CCT_CHAT
> > > , CCT_CHAP)
> > > VALUES
> > > ( ? /* CONTA.CCT_CIIREG */
> > > , ? /* CONTA.CCT_IDENT */
> > > , ? /* CONTA.CCT_MAE */
> > > , ? /* CONTA.CCT_CONTA */
> > > , ? /* CONTA.CCT_TITULO */
> > > , ? /* CONTA.CCT_TIPO */
> > > , ? /* CONTA.CCT_CUSCOD */
> > > , ? /* CONTA.CCT_ORDEM */
> > > , ? /* CONTA.CCT_RATEIO */
> > > , ? /* CONTA.CCT_CHAT */
> > > , ? /* CONTA.CCT_CHAP */ )
> > >
> > > FIELDS = [ Version 1 SQLd 0 SQLn 30 ]
> > > ----*/
> > > /*---
> > > [ 05/10/2005 17:23:59 ]
> > > EXECUTE STATEMENT
> > > TR_HANDLE = 14228092
> > > STMT_HANDLE = 14226772
> > > PARAMS = [ Version 1 SQLd 11 SQLn 11
> > > CONTA.CCT_CIIREG[CCT_CIIREG] = '10010001'
> > > CONTA.CCT_IDENT = 0
> > > CONTA.CCT_MAE = 1004
> > > CONTA.CCT_CONTA = '110101003'
> > > CONTA.CCT_TITULO = 'teste1'
> > > CONTA.CCT_TIPO = 'A'
> > > CONTA.CCT_CUSCOD = <NULL>
> > > CONTA.CCT_ORDEM = 0
> > > CONTA.CCT_RATEIO = 0
> > > CONTA.CCT_CHAT = 0
> > > CONTA.CCT_CHAP = 0 ]
> > >
> > > ERRCODE = 335544347
> > > ----*/
> > > /*---
> > > [ 05/10/2005 17:23:59 ]
> > > INTERPRET BUFFER =
> > >
> > > ERRCODE = 61
> > > ----*/
> > > /*---
> > > [ 05/10/2005 17:23:59 ]
> > > INTERPRET BUFFER = validation error for column CCT_CRIACAO,
> > > value "*** null ***"
> > >
> > > ERRCODE = -1
> > > ----*/
> > >
> > > I did not construct the InsertSQL, so I suppose IBO did it.
> > > As you can note, fields CCT_CRIACAO and CCT_GRAU are present in
> > > SELECT clause, but are NOT present in INSERT clause, (CCT_GRAU is
> > > allowed Null in DataBase) but if I watch at BeforePost event their
> > > values are:
> > >
> > > FormatDateTime('yyyy-mm-dd hh:nn:ss', FieldByName
> > > ('cct_criacao').AsDateTime) = '2005-10-05 18:04:34'
> > > FieldByName('cct_grau').AsInteger = 5
> > >
> > > I did no changes on code, so I dont't know why the original
> problem
> > > was transfered from CCT_CIIREG to CCT_CRIACAO, but it's still the
> > > same problem.
> > >
> > > I hope there's enough information for your analisys. Great thanks,
> > >
> > > Roberto
> > >
> > >
> > > --- In IBObjects@yahoogroups.com, Helen Borrie <helebor@t...>
> wrote:
> > > > At 06:26 PM 4/10/2005 +0000, you wrote:
> > > > >Hi Helen,
> > > > >Now I remember my original problem that persists for weeks and
> was
> > > > >posted before.
> > > > >Take a look on my original question:
> > > > >
> > > > >I am using a TIB_Grid linked to a TIB_DataSource and a
> TIB_Query.
> > > > >I have this code at IB_QueryContaAfterInsert event:
> > > > >with IB_QueryConta do
> > > > >begin
> > > > >...
> > > > >FieldByName('cct_ciireg').AsString := Gl_ciireg_f;
> > > > >...
> > > > >end;
> > > > >Im this case, Gl_ciireg_f = '10010001'
> > > >
> > > > If 1) the field 'cct_ciireg' is present in the SELECT statement
> > > >
> > > > and
> > > >
> > > > 2) you have correct keylinks
> > > >
> > > > an
> > > >
> > > > 3) the dataset's RequestLive property is set to True
> > > >
> > > > then this assignment will work.
> > > >
> > > > >For a new record, the user types values for other fields on the
> > > > >TIB_Grid. Field cct_ciireg is not visible on the grid, so user
> > > cannot
> > > > >change it.
> > > > >I checked that the code above actually executes.
> > > > >I watched FieldByName('cct_ciireg').AsString in 2 different
> places:
> > > > >at end of IB_QueryContaAfterInsert event and
> > > > >at end of IB_QueryContaBeforePost event
> > > > >In both places, the value is correct = '10010001'
> > > > >Although, when posting record, I got this ISC Error Message:
> > > > >ISC ERROR CODE: 335544347
> > > > >validation error for column CCT_CIIREG, value "***null***"
> > > > >
> > > > >Looking at TIB_Monitor, the real Insert statement doesn't have
> > > field
> > > > >cct_ciireg, but only fields that are on the TIB_Grid
> (cct_ciireg is
> > > > >one of the fields whose value is assigned on code, not on grid,
> > > > >because it is in the Query but not in the grid):
> > > >
> > > >
> > > > >These are the strings from TIB_Monitor:
> > > > >
> > > > >INSERT INTO CONTA
> > > > >( CCT_CONTA
> > > > >, CCT_TITULO
> > > > >, CCT_TIPO
> > > > >, CCT_CUSCOD
> > > > >, CCT_ORDEM
> > > > >, CCT_RATEIO)
> > > > >VALUES
> > > > >( ? /* CONTA.CCT_CONTA */
> > > > >, ? /* CONTA.CCT_TITULO */
> > > > >, ? /* CONTA.CCT_TIPO */
> > > > >, ? /* CONTA.CCT_CUSCOD */
> > > > >, ? /* CONTA.CCT_ORDEM */
> > > > >, ? /* CONTA.CCT_RATEIO */ )
> > > >
> > > > OK, if CCT_CIIREG really is present in the dataset, then this
> > > InsertSQL was
> > > > not constructed by IBO.
> > > >
> > > > >FIELDS = [ Version 1 SQLd 0 SQLn 30 ]
> > > > >----*/
> > > > >/*---
> > > > >[ 16/09/2005 07:02:11 ]
> > > > >EXECUTE STATEMENT
> > > > >TR_HANDLE = 14164468
> > > > >STMT_HANDLE = 14166400
> > > > >PARAMS = [ Version 1 SQLd 6 SQLn 6
> > > > >CONTA.CCT_CONTA = '110103018'
> > > > >CONTA.CCT_TITULO = 'teste'
> > > > >CONTA.CCT_TIPO = 'A'
> > > > >CONTA.CCT_CUSCOD = 'teste'
> > > > >CONTA.CCT_ORDEM = 0
> > > > >CONTA.CCT_RATEIO = 0 ]
> > > > >
> > > > >ERRCODE = 335544347
> > > > >----*/
> > > > >/*---
> > > > >[ 16/09/2005 07:02:11 ]
> > > > >INTERPRET BUFFER =
> > > > >
> > > > >ERRCODE = 60
> > > > >----*/
> > > > >/*---
> > > > >[ 16/09/2005 07:02:11 ]
> > > > >INTERPRET BUFFER = validation error for column CCT_CIIREG,
> > > value "***
> > > > >null ***"
> > > > >
> > > > >Submiting these questions on Forum before, somebody suggests to
> > > fill
> > > > >in the IB_Query Insert property (at end of BeforePost event)
> with
> > > the
> > > > >statement I want to submit to the server.
> > > >
> > > > That's not correct advice for the problem as you describe it
> here.
> > > >
> > > > If you intend to use the Insert method of the dataset, you need
> the
> > > > InsertSQL to be present before the SELECT statement is prepared.
> > > As I have
> > > > explained before, for a simple SELECT statement, IBO does this
> > > > automatically, as long as you have taken proper care with
> > > KeyLinks. If you
> > > > need to use custom SQL (which does not appear to be the case
> here)
> > > >
> > > > Having a field's Visible property set to True does NOT prevent
> it
> > > being
> > > > assigned to or, more broadly, you are mistaken if you think that
> > > the
> > > > InsertSQL is constructed from the fields that are visible in the
> > > grid.
> > > >
> > > > I want to see the exact SELECT statement that is used to get the
> > > > dataset. From there, I can show you what you need to do to make
> > > this
> > > > internal assignment. We are not talking about anything
> > > complicated. The
> > > > corrections I did to your online example are all you need to
> assign
> > > a value
> > > > to a hidden field.
> > > >
> > > > Helen
> >
> > in the query component, is there any SQL in the SQL update or
> insert edit box?
> > If so - clear it out and let IBO dynamically generate it instead of
> using an outdated version of it
> > Alan
>
>
>
>
>
> __________________________________________________________________
> _________
> IB Objects - direct, complete, custom connectivity to Firebird or
> InterBase
> without the need for BDE, ODBC or any other layer.
> __________________________________________________________________
> _________
> http://www.ibobjects.com - your IBO community resource for Tech
> Info papers,
> keyword-searchable FAQ, community code contributions and more !
>
> Yahoo! Groups Links
>
>
>
>
>
>
>
>
>