Bobby Heid
bheid at appdevgrp.com
Thu Mar 16 06:26:50 CST 2006
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