Re: Fwd: v13 - Number of field/array pairs for selection to array
after some testing - it appears there is no (practical) limit. I created a 4000 pair Selection to Array using the magic * it appears to have executed correctly, populating the 4000th array On Fri, 2 Feb 2018 09:08:14 -0500, Mike Beatty via 4D_Tech wrote: > Chip- > > I know at one point the limit was 64, not sure when/if it became 256. I > demonstrated this to Thibeaux (sp?) many years ago at a Summit and he was > surprised ;-). > > Regardless, to get around that, I recoded to use SQL commands, which allows > you to dynamically run table-to-table. > > Here's the code that i used a few years ago to to a mass export. I'm sure > others have similar (or better) examples. > > > // Method: pSQLSelectIntoArrays > > > *C_LONGINT*($vltablenum;$size1;$vlDataLoop2;$fieldnum;$vlCounter; > $vlFieldType;$vhTimeStampBegin;$vhTimeStampEnd;$vlLimit) > *C_POINTER*($array;*$1*) > *C_TEXT*($vtArrayName;$fieldtext;$vtValueText;$vtwhereText;$vtLimitText; > $vtOffsettext;$vtClientGroup;$clienttext;$vtExportType;$vtSelectText) > *C_TIME*($vhTime1;$vhTime2) > *C_LONGINT*($vlOffset;$vlLimit) > *C_TEXT*(*$2*;*$7*;*$8*) > *C_LONGINT*(*$3*;*$4*;*$5*;*$6*) > > *pMethodAuditBegin *(*Current method name*) > > vpTablePtr:=*$1* > $vtArrayName:=*$2* > $vhTimeStampBegin:=*$3* > $vhTimeStampEnd:=*$4* > $vtClientGroup:="" > > $vltablenum:=*Table*(*$1*) > *If *(*Count parameters*>=5) > $vlLimit:=*$5* > $vlOffset:=*$6* > $vtExportType:=*$7* > $vtClientGroup:=*$8* > *Else * > > $vlLimit:=10 > *End if * > > $vlCounter:=*Get last field number*($vltablenum) > > $vtValueText:="" > > *For *($vlDataLoop2;1;$vlCounter) > *GET FIELD PROPERTIES*($vltablenum;$vlDataLoop2;$vlFieldType) > *Case of * > *: *($vlFieldType=7) // subtable > //: ($vlFieldType=11) // time - treat as a longint > $vtValueText:=$vtValueText+":"+$vtArrayName+*String*($vlDataLoop2)+"," > *: *($vlFieldType=30) // blob > // INSERT IN ARRAY(atDataArray;$dataloop;1) > $vtValueText:=$vtValueText+":"+$vtArrayName+*String*($vlDataLoop2)+"," > *Else * > $vtValueText:=$vtValueText+":"+$vtArrayName+*String*($vlDataLoop2)+"," > *End case * > *End for * > $vtValueText:=*Substring*($vtValueText;1;*Length*($vtValueText)-1) > > *C_TEXT*($tQueryTxt) > //$tQueryTxt:="SELECT * FROM " > $vtSelectText:=*fSQLSelectFromClause *($vltablenum) > $tQueryTxt:=$vtSelectText //$tQueryTxt+Table name($vltablenum) > $vtwhereText:=*fSQLSelectWhereClause *($vltablenum;$clienttext;$ > vhTimeStampBegin;$vhTimeStampEnd;$vtExportType;$vtClientGroup) > //if($clienttext#"") > //$vtwhereText:=" WHERE "+$clienttext > //$vtwhereText:=$vtwhereText+" AND time_stamp > > "+String($vhTimeStampBegin)+" AND time_stamp <= "+String($vhTimeStampEnd) > //else > // $vtwhereText:=" WHERE time_stamp > "+String($vhTimeStampBegin)+" AND > time_stamp <= "+String($vhTimeStampEnd) > //end if > $tQueryTxt:=$tQueryTxt+$vtwhereText > $vtLimitText:=" LIMIT "+*String*($vlLimit) > $tQueryTxt:=$tQueryTxt+$vtLimitText > $vtOffsettext:=" OFFSET "+*String*($vlOffset) > $tQueryTxt:=$tQueryTxt+$vtOffsettext > $tQueryTxt:=$tQueryTxt+" INTO "+$vtValueText+";" > > *C_TEXT*($tQueryTxt) > //$tQueryTxt:="INSERT INTO "+Table name($vltablenum)+" ("+$fieldtext+") > VALUES ("+$vtValueText+");" > $vhTime1:=*Current time* > *Begin SQL* > *EXECUTE* *IMMEDIATE** :*$tQueryTxt*;* > *End SQL* > $vhTime2:=*Current time* > *FLUSH BUFFERS* > > *pMethodAuditEnd *(*Current method name*) > > > > Mike > > > On Jan 29, 2018, at 3:00 PM, 4d_tech-requ...@lists.4d.com wrote: > > I seem to remember that there is limit of 256 pairs for this command. > > I am building the command in text to be used by Execute Formula, I want > to be sure that I do not exceed the maximum number of pairs allowed. > ** > 4D Internet Users Group (4D iNUG) > FAQ: http://lists.4d.com/faqnug.html > Archive: http://lists.4d.com/archives.html > Options: http://lists.4d.com/mailman/options/4d_tech > Unsub: mailto:4d_tech-unsubscr...@lists.4d.com > ** --- Gas is for washing parts Alcohol is for drinkin' Nitromethane is for racing ** 4D Internet Users Group (4D iNUG) FAQ: http://lists.4d.com/faqnug.html Archive: http://lists.4d.com/archives.html Options: http://lists.4d.com/mailman/options/4d_tech Unsub: mailto:4d_tech-unsubscr...@lists.4d.com **
Fwd: v13 - Number of field/array pairs for selection to array
Chip- I know at one point the limit was 64, not sure when/if it became 256. I demonstrated this to Thibeaux (sp?) many years ago at a Summit and he was surprised ;-). Regardless, to get around that, I recoded to use SQL commands, which allows you to dynamically run table-to-table. Here's the code that i used a few years ago to to a mass export. I'm sure others have similar (or better) examples. // Method: pSQLSelectIntoArrays *C_LONGINT*($vltablenum;$size1;$vlDataLoop2;$fieldnum;$vlCounter; $vlFieldType;$vhTimeStampBegin;$vhTimeStampEnd;$vlLimit) *C_POINTER*($array;*$1*) *C_TEXT*($vtArrayName;$fieldtext;$vtValueText;$vtwhereText;$vtLimitText; $vtOffsettext;$vtClientGroup;$clienttext;$vtExportType;$vtSelectText) *C_TIME*($vhTime1;$vhTime2) *C_LONGINT*($vlOffset;$vlLimit) *C_TEXT*(*$2*;*$7*;*$8*) *C_LONGINT*(*$3*;*$4*;*$5*;*$6*) *pMethodAuditBegin *(*Current method name*) vpTablePtr:=*$1* $vtArrayName:=*$2* $vhTimeStampBegin:=*$3* $vhTimeStampEnd:=*$4* $vtClientGroup:="" $vltablenum:=*Table*(*$1*) *If *(*Count parameters*>=5) $vlLimit:=*$5* $vlOffset:=*$6* $vtExportType:=*$7* $vtClientGroup:=*$8* *Else * $vlLimit:=10 *End if * $vlCounter:=*Get last field number*($vltablenum) $vtValueText:="" *For *($vlDataLoop2;1;$vlCounter) *GET FIELD PROPERTIES*($vltablenum;$vlDataLoop2;$vlFieldType) *Case of * *: *($vlFieldType=7) // subtable //: ($vlFieldType=11) // time - treat as a longint $vtValueText:=$vtValueText+":"+$vtArrayName+*String*($vlDataLoop2)+"," *: *($vlFieldType=30) // blob // INSERT IN ARRAY(atDataArray;$dataloop;1) $vtValueText:=$vtValueText+":"+$vtArrayName+*String*($vlDataLoop2)+"," *Else * $vtValueText:=$vtValueText+":"+$vtArrayName+*String*($vlDataLoop2)+"," *End case * *End for * $vtValueText:=*Substring*($vtValueText;1;*Length*($vtValueText)-1) *C_TEXT*($tQueryTxt) //$tQueryTxt:="SELECT * FROM " $vtSelectText:=*fSQLSelectFromClause *($vltablenum) $tQueryTxt:=$vtSelectText //$tQueryTxt+Table name($vltablenum) $vtwhereText:=*fSQLSelectWhereClause *($vltablenum;$clienttext;$ vhTimeStampBegin;$vhTimeStampEnd;$vtExportType;$vtClientGroup) //if($clienttext#"") //$vtwhereText:=" WHERE "+$clienttext //$vtwhereText:=$vtwhereText+" AND time_stamp > "+String($vhTimeStampBegin)+" AND time_stamp <= "+String($vhTimeStampEnd) //else // $vtwhereText:=" WHERE time_stamp > "+String($vhTimeStampBegin)+" AND time_stamp <= "+String($vhTimeStampEnd) //end if $tQueryTxt:=$tQueryTxt+$vtwhereText $vtLimitText:=" LIMIT "+*String*($vlLimit) $tQueryTxt:=$tQueryTxt+$vtLimitText $vtOffsettext:=" OFFSET "+*String*($vlOffset) $tQueryTxt:=$tQueryTxt+$vtOffsettext $tQueryTxt:=$tQueryTxt+" INTO "+$vtValueText+";" *C_TEXT*($tQueryTxt) //$tQueryTxt:="INSERT INTO "+Table name($vltablenum)+" ("+$fieldtext+") VALUES ("+$vtValueText+");" $vhTime1:=*Current time* *Begin SQL* *EXECUTE* *IMMEDIATE** :*$tQueryTxt*;* *End SQL* $vhTime2:=*Current time* *FLUSH BUFFERS* *pMethodAuditEnd *(*Current method name*) Mike On Jan 29, 2018, at 3:00 PM, 4d_tech-requ...@lists.4d.com wrote: I seem to remember that there is limit of 256 pairs for this command. I am building the command in text to be used by Execute Formula, I want to be sure that I do not exceed the maximum number of pairs allowed. ** 4D Internet Users Group (4D iNUG) FAQ: http://lists.4d.com/faqnug.html Archive: http://lists.4d.com/archives.html Options: http://lists.4d.com/mailman/options/4d_tech Unsub: mailto:4d_tech-unsubscr...@lists.4d.com **
Re: v13 - Number of field/array pairs for selection to array
v13 docs do not specify a limit to the pairings, but other commands (Query) have (or had) limits even without an acknowledgment from 4D. the '*' in this instance does not negate the need for Execute Formula, I considered that option. Thanks On Tue, 30 Jan 2018 20:32:56 +0100, Arnaud de Montard via 4D_Tech wrote: > >> Le 29 janv. 2018 à 20:01, Douglas von Roeder via 4D_Tech >> <4d_tech@lists.4d.com> a écrit : >> >> Chip: >> >> Perhaps the optional asterisk has removed that limit? > > Asterisk could also remove the need to use Execute Formula… > > -- > Arnaud de Montard > > > ** > 4D Internet Users Group (4D iNUG) > FAQ: http://lists.4d.com/faqnug.html > Archive: http://lists.4d.com/archives.html > Options: http://lists.4d.com/mailman/options/4d_tech > Unsub: mailto:4d_tech-unsubscr...@lists.4d.com > ** --- Gas is for washing parts Alcohol is for drinkin' Nitromethane is for racing ** 4D Internet Users Group (4D iNUG) FAQ: http://lists.4d.com/faqnug.html Archive: http://lists.4d.com/archives.html Options: http://lists.4d.com/mailman/options/4d_tech Unsub: mailto:4d_tech-unsubscr...@lists.4d.com **
Re: v13 - Number of field/array pairs for selection to array
> Le 29 janv. 2018 à 20:01, Douglas von Roeder via 4D_Tech > <4d_tech@lists.4d.com> a écrit : > > Chip: > > Perhaps the optional asterisk has removed that limit? Asterisk could also remove the need to use Execute Formula… -- Arnaud de Montard ** 4D Internet Users Group (4D iNUG) FAQ: http://lists.4d.com/faqnug.html Archive: http://lists.4d.com/archives.html Options: http://lists.4d.com/mailman/options/4d_tech Unsub: mailto:4d_tech-unsubscr...@lists.4d.com **
Re: v13 - Number of field/array pairs for selection to array
Chip: Perhaps the optional asterisk has removed that limit? -- Douglas von Roeder 949-336-2902 On Mon, Jan 29, 2018 at 9:59 AM, Chip Scheide via 4D_Tech < 4d_tech@lists.4d.com> wrote: > I seem to remember that there is limit of 256 pairs for this command. > > I am building the command in text to be used by Execute Formula, I want > to be sure that I do not exceed the maximum number of pairs allowed. > > Thanks > --- > Gas is for washing parts > Alcohol is for drinkin' > Nitromethane is for racing > ** > 4D Internet Users Group (4D iNUG) > FAQ: http://lists.4d.com/faqnug.html > Archive: http://lists.4d.com/archives.html > Options: http://lists.4d.com/mailman/options/4d_tech > Unsub: mailto:4d_tech-unsubscr...@lists.4d.com > ** ** 4D Internet Users Group (4D iNUG) FAQ: http://lists.4d.com/faqnug.html Archive: http://lists.4d.com/archives.html Options: http://lists.4d.com/mailman/options/4d_tech Unsub: mailto:4d_tech-unsubscr...@lists.4d.com **
v13 - Number of field/array pairs for selection to array
I seem to remember that there is limit of 256 pairs for this command. I am building the command in text to be used by Execute Formula, I want to be sure that I do not exceed the maximum number of pairs allowed. Thanks --- Gas is for washing parts Alcohol is for drinkin' Nitromethane is for racing ** 4D Internet Users Group (4D iNUG) FAQ: http://lists.4d.com/faqnug.html Archive: http://lists.4d.com/archives.html Options: http://lists.4d.com/mailman/options/4d_tech Unsub: mailto:4d_tech-unsubscr...@lists.4d.com **