A Microsoft Office (Excel, Word) forum. OfficeFrustration

If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below.

Go Back   Home » OfficeFrustration forum » Microsoft Access » Database Design
Site Map Home Register Authors List Search Today's Posts Mark Forums Read  

How do I programmatically create field names in a loop?



 
 
Thread Tools Display Modes
  #1  
Old July 20th, 2009, 07:53 PM posted to microsoft.public.access.tablesdbdesign,microsoft.public.access
M Skabialka
external usenet poster
 
Posts: 570
Default How do I programmatically create field names in a loop?

Because of the complexities of an Excel spreadsheet that I need to import
into Access, I have decided to import the whole worksheet into Access then
use VBA to go through it row by row, field by field.
The spreadsheet will have to be imported each two weeks, and the data will
replace what is there. The number of columns increases weekly, the rows
sometimes.
Since I am bringing it into a new table, the test I have done creates field
names from F1 to F203. How do a use a loop to go through these fields? And
is there a limit to the number of fields in a table - like 254 or some other
power of 2? I am using Access 2003 for now, will use 2007 later.

do until recordset.EOF
for x = 1 to rs.fields.count
do something with rs!Fx 'how do I create this fieldname so it
will read as F1, F2, F3, etc?
next x
rs.movenext
loop


  #2  
Old July 20th, 2009, 07:58 PM posted to microsoft.public.access.tablesdbdesign,microsoft.public.access
Douglas J. Steele[_3_]
external usenet poster
 
Posts: 3,143
Default How do I programmatically create field names in a loop?

rs.Fields("F" & x)

--
Doug Steele, Microsoft Access MVP
http://I.Am/DougSteele
(no e-mails, please!)


"M Skabialka" wrote in message
...
Because of the complexities of an Excel spreadsheet that I need to import
into Access, I have decided to import the whole worksheet into Access then
use VBA to go through it row by row, field by field.
The spreadsheet will have to be imported each two weeks, and the data will
replace what is there. The number of columns increases weekly, the rows
sometimes.
Since I am bringing it into a new table, the test I have done creates
field names from F1 to F203. How do a use a loop to go through these
fields? And is there a limit to the number of fields in a table - like
254 or some other power of 2? I am using Access 2003 for now, will use
2007 later.

do until recordset.EOF
for x = 1 to rs.fields.count
do something with rs!Fx 'how do I create this fieldname so
it will read as F1, F2, F3, etc?
next x
rs.movenext
loop



  #3  
Old July 20th, 2009, 07:58 PM posted to microsoft.public.access.tablesdbdesign,microsoft.public.access
Jeff Boyce
external usenet poster
 
Posts: 8,621
Default How do I programmatically create field names in a loop?

If you are attempting to "stuff" an Excel spreadsheet into an Access table
(your comments about a limit to the number of fields made me suspect this),
you will find Access to be less than accommodating. Both you and Access
will have to work overtime to come up with work-arounds for feeding it data
that has not been well-normalized.

A common approach to using data that originated in a spreadsheet is to
import the data as raw data, then use queries to "parse" the data into a
well-normalized table structure.

If you'll describe a bit more about the actual contents of the fields
involved, folks here may be able to offer alternate data designs.

Regards

Jeff Boyce
Microsoft Office/Access MVP

"M Skabialka" wrote in message
...
Because of the complexities of an Excel spreadsheet that I need to import
into Access, I have decided to import the whole worksheet into Access then
use VBA to go through it row by row, field by field.
The spreadsheet will have to be imported each two weeks, and the data will
replace what is there. The number of columns increases weekly, the rows
sometimes.
Since I am bringing it into a new table, the test I have done creates
field names from F1 to F203. How do a use a loop to go through these
fields? And is there a limit to the number of fields in a table - like
254 or some other power of 2? I am using Access 2003 for now, will use
2007 later.

do until recordset.EOF
for x = 1 to rs.fields.count
do something with rs!Fx 'how do I create this fieldname so
it will read as F1, F2, F3, etc?
next x
rs.movenext
loop



  #4  
Old July 20th, 2009, 08:33 PM posted to microsoft.public.access.tablesdbdesign,microsoft.public.access
M Skabialka
external usenet poster
 
Posts: 570
Default How do I programmatically create field names in a loop?

The bi-weekly data comes from an outside source - there are several columns
of metadata to the left, and several rows at the top which stop me from
using the top row as a header. Each record is a column, not a row, and I
have no control over this.
e.g The Vehicle ID is in Row 6, starting in column H, and everything to do
with this vehicle is in this column, based of the description in Columns
A-G. The spreadsheet is formatted into colorful sections and is great as a
spreadsheet, but horrible for lookup purposes. The Access tables I create
from it will be normalized, which is the whole point of my exercise.

Douglas Steele's answer will help me peruse the data, throw it into an array
and create tables from that.

Mich


"Jeff Boyce" wrote in message
...
If you are attempting to "stuff" an Excel spreadsheet into an Access table
(your comments about a limit to the number of fields made me suspect
this), you will find Access to be less than accommodating. Both you and
Access will have to work overtime to come up with work-arounds for feeding
it data that has not been well-normalized.

A common approach to using data that originated in a spreadsheet is to
import the data as raw data, then use queries to "parse" the data into a
well-normalized table structure.

If you'll describe a bit more about the actual contents of the fields
involved, folks here may be able to offer alternate data designs.

Regards

Jeff Boyce
Microsoft Office/Access MVP

"M Skabialka" wrote in message
...
Because of the complexities of an Excel spreadsheet that I need to import
into Access, I have decided to import the whole worksheet into Access
then use VBA to go through it row by row, field by field.
The spreadsheet will have to be imported each two weeks, and the data
will replace what is there. The number of columns increases weekly, the
rows sometimes.
Since I am bringing it into a new table, the test I have done creates
field names from F1 to F203. How do a use a loop to go through these
fields? And is there a limit to the number of fields in a table - like
254 or some other power of 2? I am using Access 2003 for now, will use
2007 later.

do until recordset.EOF
for x = 1 to rs.fields.count
do something with rs!Fx 'how do I create this fieldname so
it will read as F1, F2, F3, etc?
next x
rs.movenext
loop





  #5  
Old July 20th, 2009, 08:41 PM posted to microsoft.public.access.tablesdbdesign,microsoft.public.access
Jeff Boyce
external usenet poster
 
Posts: 8,621
Default How do I programmatically create field names in a loop?

If you're saying that the Excel data needs to be transposed (swap rows for
columns), Excel offers such a function.

Regards

Jeff Boyce
Microsoft Office/Access MVP

"M Skabialka" wrote in message
...
The bi-weekly data comes from an outside source - there are several
columns of metadata to the left, and several rows at the top which stop me
from using the top row as a header. Each record is a column, not a row,
and I have no control over this.
e.g The Vehicle ID is in Row 6, starting in column H, and everything to do
with this vehicle is in this column, based of the description in Columns
A-G. The spreadsheet is formatted into colorful sections and is great as
a spreadsheet, but horrible for lookup purposes. The Access tables I
create from it will be normalized, which is the whole point of my
exercise.

Douglas Steele's answer will help me peruse the data, throw it into an
array and create tables from that.

Mich


"Jeff Boyce" wrote in message
...
If you are attempting to "stuff" an Excel spreadsheet into an Access
table (your comments about a limit to the number of fields made me
suspect this), you will find Access to be less than accommodating. Both
you and Access will have to work overtime to come up with work-arounds
for feeding it data that has not been well-normalized.

A common approach to using data that originated in a spreadsheet is to
import the data as raw data, then use queries to "parse" the data into a
well-normalized table structure.

If you'll describe a bit more about the actual contents of the fields
involved, folks here may be able to offer alternate data designs.

Regards

Jeff Boyce
Microsoft Office/Access MVP

"M Skabialka" wrote in message
...
Because of the complexities of an Excel spreadsheet that I need to
import into Access, I have decided to import the whole worksheet into
Access then use VBA to go through it row by row, field by field.
The spreadsheet will have to be imported each two weeks, and the data
will replace what is there. The number of columns increases weekly, the
rows sometimes.
Since I am bringing it into a new table, the test I have done creates
field names from F1 to F203. How do a use a loop to go through these
fields? And is there a limit to the number of fields in a table - like
254 or some other power of 2? I am using Access 2003 for now, will use
2007 later.

do until recordset.EOF
for x = 1 to rs.fields.count
do something with rs!Fx 'how do I create this fieldname so
it will read as F1, F2, F3, etc?
next x
rs.movenext
loop







  #6  
Old July 21st, 2009, 05:07 AM posted to microsoft.public.access.tablesdbdesign,microsoft.public.access
Piet Linden[_2_]
external usenet poster
 
Posts: 280
Default How do I programmatically create field names in a loop?

Not sure why I'm opening my mouth at all here, but...

Why not just transpose the data directly in Excel to (maybe) a new
sheet, and then since the data has all been fixed for you, you can
just link and import? So you'd have to declare an instance of Excel,
and then you could transpose the range, and then import it... And the
cool thing about Excel is that you can do the transposition manually
and record everything in a macro, and then just basically adapt/steal
the macro and paste it directly into your code... If you paste the
transposed records into a new worksheet (the last in the book), you
can easily find the sheet, since it should be the one with the highest
index. (get using something like wkbk.Sheets.Count

Then you could just run your import against that worksheet... Ken
Snell has just about every variation of working with Excel from Access
you could think of... so check out his website if you need to.
  #7  
Old July 21st, 2009, 03:05 PM posted to microsoft.public.access.tablesdbdesign,microsoft.public.access
M Skabialka
external usenet poster
 
Posts: 570
Default How do I programmatically create field names in a loop?

Interesting idea, which I am pursuing.
I have very little experience in Excel macros, but using the recording
option have managed to figure out some of the code, including the last sheet
in the workbook.
Since the number of rows and columns will gradually increase, how do you
find the actual number of them with data?
I tried Rows.count and Columns.count and got 65536 and 256 (Excel 2003)
I need this to select the range to transpose.
Thanks,
Mich


"Piet Linden" wrote in message
...
Not sure why I'm opening my mouth at all here, but...

Why not just transpose the data directly in Excel to (maybe) a new
sheet, and then since the data has all been fixed for you, you can
just link and import? So you'd have to declare an instance of Excel,
and then you could transpose the range, and then import it... And the
cool thing about Excel is that you can do the transposition manually
and record everything in a macro, and then just basically adapt/steal
the macro and paste it directly into your code... If you paste the
transposed records into a new worksheet (the last in the book), you
can easily find the sheet, since it should be the one with the highest
index. (get using something like wkbk.Sheets.Count

Then you could just run your import against that worksheet... Ken
Snell has just about every variation of working with Excel from Access
you could think of... so check out his website if you need to.



  #8  
Old July 31st, 2009, 03:23 AM posted to microsoft.public.access.tablesdbdesign,microsoft.public.access
Ken Snell [MVP]
external usenet poster
 
Posts: 279
Default How do I programmatically create field names in a loop?

You can use EXCEL's UsedRange property of a worksheet to get the rightmost
and bottommost cell reference, where the last set of data for the cells
resides:

Worksheets(1).UsedRange.Address

Worksheets(1).UsedRange.Row

Worksheets(1).UsedRange.Column

--

Ken Snell
MS ACCESS MVP
http://www.accessmvp.com/KDSnell/



"M Skabialka" wrote in message
...
Interesting idea, which I am pursuing.
I have very little experience in Excel macros, but using the recording
option have managed to figure out some of the code, including the last
sheet in the workbook.
Since the number of rows and columns will gradually increase, how do you
find the actual number of them with data?
I tried Rows.count and Columns.count and got 65536 and 256 (Excel 2003)
I need this to select the range to transpose.
Thanks,
Mich


"Piet Linden" wrote in message
...
Not sure why I'm opening my mouth at all here, but...

Why not just transpose the data directly in Excel to (maybe) a new
sheet, and then since the data has all been fixed for you, you can
just link and import? So you'd have to declare an instance of Excel,
and then you could transpose the range, and then import it... And the
cool thing about Excel is that you can do the transposition manually
and record everything in a macro, and then just basically adapt/steal
the macro and paste it directly into your code... If you paste the
transposed records into a new worksheet (the last in the book), you
can easily find the sheet, since it should be the one with the highest
index. (get using something like wkbk.Sheets.Count

Then you could just run your import against that worksheet... Ken
Snell has just about every variation of working with Excel from Access
you could think of... so check out his website if you need to.





  #9  
Old August 4th, 2009, 02:55 PM posted to microsoft.public.access.tablesdbdesign,microsoft.public.access
M Skabialka
external usenet poster
 
Posts: 570
Default How do I programmatically create field names in a loop?

Thank-you, this works well.
Mich

"Ken Snell [MVP]" wrote in message
...
You can use EXCEL's UsedRange property of a worksheet to get the rightmost
and bottommost cell reference, where the last set of data for the cells
resides:

Worksheets(1).UsedRange.Address

Worksheets(1).UsedRange.Row

Worksheets(1).UsedRange.Column

--

Ken Snell
MS ACCESS MVP
http://www.accessmvp.com/KDSnell/



"M Skabialka" wrote in message
...
Interesting idea, which I am pursuing.
I have very little experience in Excel macros, but using the recording
option have managed to figure out some of the code, including the last
sheet in the workbook.
Since the number of rows and columns will gradually increase, how do you
find the actual number of them with data?
I tried Rows.count and Columns.count and got 65536 and 256 (Excel 2003)
I need this to select the range to transpose.
Thanks,
Mich


"Piet Linden" wrote in message
...
Not sure why I'm opening my mouth at all here, but...

Why not just transpose the data directly in Excel to (maybe) a new
sheet, and then since the data has all been fixed for you, you can
just link and import? So you'd have to declare an instance of Excel,
and then you could transpose the range, and then import it... And the
cool thing about Excel is that you can do the transposition manually
and record everything in a macro, and then just basically adapt/steal
the macro and paste it directly into your code... If you paste the
transposed records into a new worksheet (the last in the book), you
can easily find the sheet, since it should be the one with the highest
index. (get using something like wkbk.Sheets.Count

Then you could just run your import against that worksheet... Ken
Snell has just about every variation of working with Excel from Access
you could think of... so check out his website if you need to.







 




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is Off
HTML code is Off
Forum Jump


All times are GMT +1. The time now is 08:52 PM.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright ©2004-2024 OfficeFrustration.
The comments are property of their posters.