Access 2010 VBA Lost Memory -
i trying track down may throwing pointer (lost/misdirected) while trying concatenate several different tables. keep in mind section of code below small part of 16,000 lines of code stands alone.
two sections of code below.
how code should work:
basically code should follows... when press button (first section of code), several table names passed sub 1 @ time (second section of code).
more clearly, table name passed (first section), sub runs table name (second section) , places in table called "cymeimporttable", table 2 passed (first section) sub runs again (second section) , appends table 2 in "cymeimporttable". know can put these array maybe later on. i'm trying work first optimize. okay above works fine... sometimes.
the results:
the code runs , places each table record 1 memo style cell. below code , table sizes, have 4000 records several fields in tables placed cymeimportfile table of 4000 records of 1 field. works great , seemed work @ beginning time, maybe before tables began larger??
issue:
the issue this... cymeimportfile table populated other times populated seems nothing. same number of records appear in both instances has text (what want), , other times not have (not want). blank records blank field.
what know:
- i know memo not recommended, may issue, have largely modify code avoid memo format , suits needs memo.
- my tables of contents in them , issue not result of program pulling in nothing.
- this issue occurs several other sections of code (not shown) simplest/shortest portion. cant post other sections because in 16,000 lines of code.
- i know may not able locate error code provided see guys think see if there obvious don't know about. have been programming vba month.
first section of code below: not believe issue lies here wanted give information possible. section below passes table name sub called "concatenate" when button pressed. keep in mind, code not optimized.
private sub buttonconcatenate_click() docmd.setwarnings false docmd.copyobject , "cymeimportfile", actable, "template_cymeimportfile" 'docmd.runsql "delete * cymeimportfile" docmd.setwarnings true dim table string '[general] table = "general" concatenate.concatenate table form_cyme_model_update.checkgeneral.value = 0 '[imperial] table = "imperial" concatenate.concatenate table ' [headnodes] table = "headnodes" concatenate.concatenate table form_cyme_model_update.checkheadnodes.value = 0 ' [source] table = "source" concatenate.concatenate table form_cyme_model_update.checksource.value = 0 ' [node] table = "node" concatenate.concatenate table form_cyme_model_update.checknode.value = 0 ' [line_configuration] table = "line_configuration" concatenate.concatenate table form_cyme_model_update.checkline_configuration.value = 0 ' [section] table = "section" concatenate.concatenate table form_cyme_model_update.checksection.value = 0 ' [switch setting] table = "switch_setting" concatenate.concatenate table form_cyme_model_update.checkswitchsetting.value = 0 ' [fuse setting] table = "fuse_setting" concatenate.concatenate table form_cyme_model_update.checkfusesetting.value = 0 ' [recloser setting] table = "recloser_setting" concatenate.concatenate table form_cyme_model_update.checkreclosersetting.value = 0 ' [transformer setting] table = "transformer_setting" 'concatenate.concatenate table form_cyme_model_update.checktransformersetting.value = 0 ' [sectionalizer setting] table = "sectionalizer_setting" concatenate.concatenate table form_cyme_model_update.checksectionalizersetting.value = 0 ' [regulator setting] table = "regulator_byphase_setting" concatenate.concatenate table form_cyme_model_update.checkregulatorsetting.value = 0 ' [shunt capacitor setting] table = "shunt_capacitor_setting" concatenate.concatenate table form_cyme_model_update.checkshuntcapacitorsetting.value = 0 ' [intermediate nodes] table = "intermediate_nodes" concatenate.concatenate table form_cyme_model_update.checkintermediatenodes.value = 0 ' [relay setting] 'table = "relay_setting" 'concatenate.concatenate table 'form_cyme_model_update.checkrelaysetting.value = 0 form_cyme_model_update.checkconcatenate.value = -1 ''message box msgbox "cyme imput has been concatenated cymeimportfile" end sub this next section variable (table name) passed , used place passed table name's contents table "cymeinputfile".
option compare database sub concatenate(table string) ' set database set dbscyme_model_update = currentdb dim field string 'count records , fields recordcount = currentdb.tabledefs(table).recordcount fieldcount = currentdb.tabledefs(table).fields.count recordcounter = 0 redim fieldarray(0) string redim recordarray(0) string redim fieldarray(fieldcount - 1) string redim recordarray(recordcount - 1) string set rst = dbscyme_model_update.openrecordset(table) rst.movefirst until rst.eof 'field data fieldcounter = 0 while fieldcounter < fieldcount - 1 'set recordset fieldcounter = fieldcounter + 1 field = "field" & fieldcounter 'rstgeneral fieldstring = rst.fields(field) fieldarray(fieldcounter - 1) = fieldstring wend printcounter = 0 each element in fieldarray if not fieldarray(printcounter) = "n/a" holder = recordarray(recordcounter) if fieldarray(printcounter + 1) = "n/a" recordarray(recordcounter) = holder + fieldarray(printcounter) else recordarray(recordcounter) = holder + fieldarray(printcounter) + "," end if printcounter = printcounter + 1 end if next element recordcounter = recordcounter + 1 rst.movenext loop rst.close set rst = nothing dim temp string 'print cymeimportfile set rst = dbscyme_model_update.openrecordset("cymeimportfile") 'rst.movefirst recordcounter = 0 if rst.bof rst.addnew rst.update rst.moveprevious else rst.movelast rst.movenext rst.addnew rst.update rst.moveprevious end if each element in recordarray rst.edit temp = recordarray(recordcounter) rst!field1 = temp rst.update rst.movenext if rst.eof rst.addnew rst.update rst.moveprevious end if recordcounter = recordcounter + 1 next element rst.close set rst = nothing end sub
i figured out. differant adds , updates confused everything. simplified down this... not quite martin parkin saying comment lead me play around printing process in section , other sections creating tables.
new code...
'print cymeimportfile dim bob string bob = 0 set rst = dbscyme_model_update.openrecordset("cymeimportfile") recordcounter = 0 rst.movelast rst.addnew each element in recordarray 'rst.edit rst.addnew temp = recordarray(recordcounter) rst!field1 = temp rst.update recordcounter = recordcounter + 1 next element rst.close set rst = nothing redim fieldarray(0) string redim recordarray(0) string debug.print table end sub
Comments
Post a Comment