Nicholson, Karen
cyx5 at cdc.gov
Thu Mar 16 07:31:34 CST 2006
I worked some more on this last night. This is the database from he**. There are over 60 tables, all flat, a mess. The first thing I do is search the database and find those tables that end in SAF. That narrows my problem down to about 19 tables I need to be concerned with. Then, I extract the field names from those 19 tables and print those. But I really only want to get the field names of about 20 fields, not the gazillions that are in each table. So, I guess I need to build an array, a collection, something, to hold only 20 field names to update. I have the code working, but when I call the field names from the tables, I get every field name. I just want to get the field names that may be in the above 20 field names, that of course, are not listed anywhere except on my form. The ones on my form that I am looking for have been tagged with an "N" in the tag control of the field. I can not seem to reference just these 20 fields with the "N". This is running horribly slow, of course, but at least I am almost there. Dim cnn As ADODB.Connection Set cnn = CurrentProject.Connection Dim strTableName As String Dim strFieldName As String Dim srfFieldNameChg As String Dim ctl As Control Dim ctlName As String Dim strSQLTest As String Dim i As Integer Dim j As Integer Dim k As Integer For i = 0 To CurrentDb.TableDefs.Count - 1 If (CurrentDb.TableDefs(i).Name Like "*SAF") Then Debug.Print "Table: " & CurrentDb.TableDefs(i).Name strTableName = CurrentDb.TableDefs(i).Name For j = 0 To CurrentDb.TableDefs(i).Fields.Count - 1 'strFieldName = CurrentDb.TableDefs(i).Fields(j).Name Debug.Print " Field: " & CurrentDb.TableDefs(i).Fields(j).Name For k = 0 To Me.Controls.Count - 1 'Debug.Print " Control Name: " & Me.Controls(k).Name If (Me.Controls(k).Name = CurrentDb.TableDefs(i).Fields(j).Name) Then strFieldName = CurrentDb.TableDefs(i).Fields(j).Name Debug.Print strFieldName If Me.Controls(k).Name = strFieldName Then strFieldNameChg = "Forms![frmRequiredFieldReview]![" & strFieldName & "chg]" strSQLTest = "update " & strTableName & " set " & strFieldName & " = " & strFieldNameChg Debug.Print strSQLTest Stop ' DoCmd.RunSQL strsqlTest End If End If Next ' end of k loop Next ' end of j loop End If Next ' end of i loop Set cnn = Nothing Karen S. Nicholson Programmer Analyst EG&G Technical Services, Inc. Pittsburgh, PA Phone: 412-386-6649 Email: cyx5 at cdc.gov -----Original Message----- From: accessd-bounces at databaseadvisors.com [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Bobby Heid Sent: Thursday, March 16, 2006 7:27 AM To: 'Access Developers discussion and problem solving' Subject: Re: [AccessD] Dying on Code Here Karen, It looks like the problem might be that if you are using the exact code below that you are using a 'set' statement on each field. So your SQL might look something like: UPDATE sometable SET somefield="somevalue" You want to have something like: UPDATE sometable SET somefield1='somevalue1' somefield2='somevalue2' somefield3='somevalue3' ... somefieldn='somevaluen'; So, if I understand the issue correctly, you want to build the UPDATE sometable SET part first. Then loop through all of the fields and append the somefield='somevalue' (assuming text values here) strings to the end of the SQL string. Bobby -----Original Message----- From: accessd-bounces at databaseadvisors.com [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Nicholson, Karen Sent: Wednesday, March 15, 2006 2:47 PM To: accessd at databaseadvisors.com Subject: [AccessD] Dying on Code Here Help Me! I can not get this stupid code to work. Private Sub cmdRunImport_Click() Dim cnn As ADODB.Connection Set cnn = CurrentProject.Connection Dim strTableName As String Dim strFieldName As String Dim srfFieldNameChg As String Dim ctl As Control Dim ctlName As String I am trying to capture the field names and values of over 30 fields on a form, pass those names and values into a procedure to then *run around my database* and update every table that contains the field name with the captured value. This database is a total un-normalized mess and the option of normalizing does not happen to be an option at this time. I got the code to work for just one field. It is fine. I then tried to put a value on the "tag" for each required field on the form, but I can't seem to call it from within this code. Any ideas on how I can store the required fields and make this thing pump through the records? Aughghghg!!!!! Private Sub cmdRunImport_Click() Dim cnn As ADODB.Connection Set cnn = CurrentProject.Connection Dim strTableName As String Dim strFieldName As String Dim srfFieldNameChg As String Dim ctl As Control Dim ctlName As String Dim i As Integer Dim j As Integer For i = 0 To CurrentDb.TableDefs.Count - 1 For j = 0 To CurrentDb.TableDefs(i).Fields.Count - 1 If (CurrentDb.TableDefs(i).Name Like "*SAF") Then If (CurrentDb.TableDefs(i).Fields(j).Name = ("ManufacturerCode")) Then ===>> 'Or (CurrentDb.TableDefs(i).Fields(j).Name = ("sitecode")) Then Debug.Print "Field: " & CurrentDb.TableDefs(i).Fields(j).Name Debug.Print "Table: " & CurrentDb.TableDefs(i).Name End If End If Next Next strTableName = CurrentDb.TableDefs(i).Name strFieldName = CurrentDb.TableDefs(i).Fields(j).Name strFieldNameChg = "Forms![frmRequiredFieldsReview]![" & strFieldName & "chg]" Debug.Print " Field: " & CurrentDb.TableDefs(i).Fields(j).Name Debug.Print strTableName Debug.Print strFieldName Dim sqlTest As String sqlTest = "update " & strTableName & " set " & strFieldName & " = " & strFieldNameChg DoCmd.RunSQL sqlTest Set cnn = Nothing End Sub This works just fine. But I have 26 fields to go through. It will not honor that *tag* value. I need it to loop through my 26 or so field names and print out each one above, line by line so I can insert it into SQL code for my update statement. Any ideas? Karen S. Nicholson Programmer Analyst EG&G Technical Services, Inc. Pittsburgh, PA Phone: 412-386-6649 Email: cyx5 at cdc.gov -- AccessD mailing list AccessD at databaseadvisors.com http://databaseadvisors.com/mailman/listinfo/accessd Website: http://www.databaseadvisors.com -- AccessD mailing list AccessD at databaseadvisors.com http://databaseadvisors.com/mailman/listinfo/accessd Website: http://www.databaseadvisors.com