the same but with a collection to share the result
2009/11/14 Doriano Blengino <doriano.bleng...@fastwebnet.it>: > Jean-Yves F. Barbier ha scritto: >> Doriano Blengino a écrit : >> .... >> >>> About "recover any kind [...] from into a loop", I don't understand. >>> Perhaps you want to scan all the controls residing on a form - there is >>> the Controls[] property for that. Or you want to stream out all the >>> >> >> > I am suspecting you are transferring data from and to a database... > don't know why I suspect... > > May be the following routines can act as a base, if this is your duty. > > The first one, load_record(), takes a container and a Result as > parameters, and fills every control in the container with the > corresponding data from the current record of Result. In the container, > relevant controls must be named "edDBxxxx", where "xxxx" is the name of > the field from database; other controls are ignored. > > For every kind of control different code is used, so you can use > specialized controls, as I did with TDbCalcBox, which is a special > control of mines. > > > ' transfers a record from a result to a page; TRUE if error > PUBLIC SUB load_record(hCont AS Container, res AS Result) AS Boolean > DIM obj AS Object > > FOR EACH obj IN hCont.Children > IF obj.name LIKE "edDB*" THEN > SELECT Lower(object.Type(obj)) > CASE "textbox", "tdbsimplebox" > TRY obj.text = res[Mid(obj.name, 5)] > > CASE "tdbcalcbox" > obj.text = "0" > TRY obj.text = utils.formatdecimal(res[Mid(obj.name, 5)], > "#,0", obj.decimals) > > CASE "tdbdatebox" > IF dateformat = "" THEN calculate_dateseparator > obj.text = "" > ' TRY obj.text = Format(res[Mid(obj.name, 5)], dateformat) > TRY obj.text = canonicaldate(Format(res[Mid(obj.name, 5)], > gb.GeneralDate)) > > CASE "checkbox" > obj.value = FALSE > IF res[Mid(obj.name, 5)] THEN obj.value = TRUE > > CASE "label" > obj.text = "?" > TRY obj.text = res[Mid(obj.name, 5)] > > END SELECT > ENDIF > NEXT > RETURN FALSE > > CATCH > Message.Error("Errore " & error.Text & " in " & error.Where) > RETURN TRUE > END > > This is the counterpart of the previous, to write a record out to a > database. > > > ' transfers a record from page to database; TRUE if error > PUBLIC SUB save_record(hCont AS Container, recmod AS Result) AS Boolean > DIM obj AS Object > DIM st AS String > > FOR EACH obj IN hCont.Children > IF obj.name LIKE "edDB*" THEN > SELECT Lower(object.Type(obj)) > CASE "textbox", "tdbsimplebox" > recmod[Mid(obj.name, 5)] = obj.text > > CASE "tdbcalcbox" > recmod[Mid(obj.name, 5)] = utils.formatted2float(obj.text) > > CASE "tdbdatebox" > st = canonicaldate(obj.text) > IF st <> "" THEN recmod[Mid(obj.name, 5)] = Val(st) > > CASE "checkbox" > recmod[Mid(obj.name, 5)] = obj.value > > END SELECT > ENDIF > NEXT > recmod.Update > RETURN FALSE > > CATCH > Message.Error("Errore " & error.Text & " in " & error.Where) > RETURN TRUE > END > > This last one fills a grid, displaying a Result in tabular form. > > ' prepare and fill a grid with data from a result > ' columns are defined as "dbfield/title!width" > ' dbfield is the field name in recordset > ' title is the column title; if absent, same as dbfield > ' width is the column width. If absent, equally spaced columns are used > ' example: "id/Unique code!120 > ' columns are modified only if col[0].text is empty > PUBLIC SUB fill_rec_grid(gvDB AS GridView, Columns AS String, res AS > result) > DIM i, k, width AS Integer > DIM fields AS String[] > DIM st, title AS String > DIM managecols AS Boolean > > managecols = TRUE > IF gvdb.Columns.Count THEN managecols = gvdb.Columns[0].Text = "" > > fields = Split(columns, ",", "", FALSE) > gvDB.Columns.Count = fields.Count > > FOR i = 0 TO fields.count - 1 > st = fields[i] > k = InStr(st, "!") > width = gvdb.Width \ fields.Count ' default > IF k THEN > width = Val(Mid(st, k + 1)) > st = Left(st, k - 1) > ENDIF > IF managecols THEN gvdb.Columns[i].Width = width > k = InStr(st, "/") > IF k THEN > title = Mid(st, k + 1) > st = Left(st, k - 1) > ELSE > title = st > ENDIF > IF managecols THEN > gvdb.Columns[i].text = title > title = Upper(Left(title, 1)) & Mid(title, 2) > ENDIF > fields[i] = st > NEXT > gvDB.Rows.Count = res.Count > > FOR i = 0 TO res.Count - 1 > res.MoveTo(i) > FOR k = 0 TO fields.Count - 1 > title = fields[k] > TRY st = res[title] > IF NOT ERROR THEN > width = res.Fields[title].Type > ' find correct formatting > SELECT width > CASE 8 > ' date field > st = Format(res[title], gb.GeneralDate) > gvDB[i, k].Text = " " & st > > CASE 7 > ' float - align right > st = " " & res[title] > WHILE gvdb.font.Width(st) + 8 < gvdb.Columns[k].Width > st = " " & st > WEND > gvDB[i, k].Text = Mid(st, 2) > > DEFAULT > ' normal field > ' do NOT format! Sometimes text is used as database key > TRY gvDB[i, k].Text = res[title] > END SELECT > ENDIF > NEXT > NEXT > END > > If this is not what you needed, simply ignore it - but may be you can > see something useful. > > Regards, > > -- > Doriano Blengino > > "Listen twice before you speak. > This is why we have two ears, but only one mouth." > > > ------------------------------------------------------------------------------ > Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day > trial. Simplify your report design, integration and deployment - and focus on > what you do best, core application coding. Discover what's new with > Crystal Reports now. http://p.sf.net/sfu/bobj-july > _______________________________________________ > Gambas-user mailing list > Gambas-user@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/gambas-user >
analyserecursive-0.0.1.tar.gz
Description: GNU Zip compressed data
------------------------------------------------------------------------------ Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july
_______________________________________________ Gambas-user mailing list Gambas-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/gambas-user