Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
Home
Discussion GroupsFormsForms ProgrammingQueriesModules / DAO / VBAReports / PrintingMacrosDatabase DesignSecurityConversionImporting / LinkingSQL Server / ADPMultiuser / NetworkingReplicationSetup / ConfigurationDeveloper ToolkitsActiveX ControlsNew UsersGeneral 1General 2
Access DirectoryToolsTutorialsUser Groups
Related Topics
SQL ServerOther DB ProductsMS OfficeMore Topics ...

MS Access Forum / General 2 / January 2008

Tip: Looking for answers? Try searching our database.

Importing Excel Spreadsheet into Access and Changing Field Propert

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Pele - 12 Jan 2008 14:15 GMT
NOTE: I also have this question posted in another section of this newsgroup
but no answers yet. I am desperate.

I was trying to load an excel spreadsheet into Access and then set the
properties of some fields on that table.

Below is the code I was trying to use. Looks like I am having problems
with codes that don't work with Access 2000 i.e. DAO and ADO issues. I have
tried to block off the old codes that weren't working.

The code is hanging up at this point

fld1.Properties("Required") = True

Can somebody look at this code below or basically give me a code that will
work.
Thanks.

Pele

Sub FixTeam_table()
Const conTable = "1GBBU Teams"
Const confield = "Year"
Const confield2 = "Dept"
Const confield3 = "Team Name"
Const confield4 = "Team Type for CIP"
Const confield5 = "Team Multiplier Type"

Dim tdf As New ADODB.Recordset

Dim fld As Field
Dim fld2 As Field
Dim fld3 As Field
Dim fld4 As Field
Dim fld5 As Field

'Dim fld As DAO.Field
'Dim fld2 As DAO.Field
'Dim fld3 As DAO.Field
'Dim fld4 As DAO.Field
'Dim fld5 As DAO.Field
'Dim dbs As dao.Database

Dim dbs As ADODB.Connection

'Set dbs = DBEngine(0)(0)

Set dbs = CurrentProject.Connection

'Set tdf = dbs.Recordset(conTable)

tdf.Open conTable, dbs, adOpenKeyset, adLockOptimistic, adCmdTableDirect

'Set tdf = DBEngine(0)(0).TableDefs("1GBBU TEAMS")
'Set tdf = DBEngine(0)(0).TableDefs(conTable)

Set fld = tdf.Fields(confield)
Set fld2 = tdf.Fields(confield2)
Set fld3 = tdf.Fields(confield3)
Set fld4 = tdf.Fields(confield4)
Set fld5 = tdf.Fields(confield5)

fld1.Properties("Required") = True
fld2.Properties("Required") = True
fld3.Properties("Required") = True
fld4.Properties("Required") = True
fld5.Properties("Required") = True
dbs.Execute "CREATE UNIQUE INDEX idxTeamNameID ON [1GBBU Teams]([Team Name])"
End Sub
Douglas J. Steele - 12 Jan 2008 18:33 GMT
You didn't declare nor instantiate fld1 anywhere. You've got fld, fld2,
fld3, fld4 and fld5.

Change

fld1.Properties("Required") = True

to

fld.Properties("Required") = True

Signature

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

> NOTE: I also have this question posted in another section of this
> newsgroup
[quoted text clipped - 68 lines]
> Name])"
> End Sub
Pele - 12 Jan 2008 20:27 GMT
Doug,

Thanks for spotting that. I fixed it (i.e.changed fld to fld1) but it still
was stopping at the same spot.

fld1.Properties("Required") = True

I then blocked that line and it stops on the next line for fld2. Which might
mean that the way the code is written is also a problem.

I desperately need help on this since this is the only code stopping me
fromfinishing this project which is due on Monday. HELP!!!

Pele

> You didn't declare nor instantiate fld1 anywhere. You've got fld, fld2,
> fld3, fld4 and fld5.
[quoted text clipped - 79 lines]
> > Name])"
> > End Sub
Douglas J. Steele - 13 Jan 2008 12:09 GMT
Hold on, I just looked a little closer, and you're mixing DAO and ADO in
there. You need to use strictly DAO. ADO is not capable of doing what you're
trying to make it do. (You could use ADOX if you really want to, but for Jet
tables, DAO is better)

Sub FixTeam_table()
Const conTable = "1GBBU Teams"
Const confield = "Year"
Const confield2 = "Dept"
Const confield3 = "Team Name"
Const confield4 = "Team Type for CIP"
Const confield5 = "Team Multiplier Type"

Dim tdf As DAO.TableDef

Dim fld1 As DAO.Field
Dim fld2 As DAO.Field
Dim fld3 As DAO.Field
Dim fld4 As DAO.Field
Dim fld5 As DAO.Field
Dim dbs As DAO.Database

Set dbs = DBEngine(0)(0)

Set tdf = dbs.TableDefs(conTable)

Set fld1 = tdf.Fields(confield)
Set fld2 = tdf.Fields(confield2)
Set fld3 = tdf.Fields(confield3)
Set fld4 = tdf.Fields(confield4)
Set fld5 = tdf.Fields(confield5)

fld1.Properties("Required") = True
fld2.Properties("Required") = True
fld3.Properties("Required") = True
fld4.Properties("Required") = True
fld5.Properties("Required") = True
dbs.Execute "CREATE UNIQUE INDEX idxTeamNameID ON [1GBBU Teams]([Team
Name])"
End Sub

If you have a problem with DAO, make sure you've set a reference to it.
While in the VB Editor, select Tools | References. If Microsoft DAO 3.6
Object library isn't among the checked ones at the top of list, scroll
through the list until you find it, select it, then back out of the dialog.

Signature

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

> Doug,
>
[quoted text clipped - 98 lines]
>> > Name])"
>> > End Sub
Douglas J. Steele - 13 Jan 2008 13:41 GMT
Just realized you can't do this using ADOX either. You need to use DAO.

Signature

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

> Hold on, I just looked a little closer, and you're mixing DAO and ADO in
> there. You need to use strictly DAO. ADO is not capable of doing what
[quoted text clipped - 145 lines]
>>> > Name])"
>>> > End Sub
Pele - 13 Jan 2008 16:26 GMT
Doug,

Thank you very much....your suggestion was very correct. The DAO 3.6 Object
Library was not checked and hence my initial problem.

By the way, you were the one that had given me that same code about 2yrs ago
but I guess when my Access copy was refreshed, it did not enable the DAO 3.6
Object Library.

Once again, a million thanks to you.

Pele



> Hold on, I just looked a little closer, and you're mixing DAO and ADO in
> there. You need to use strictly DAO. ADO is not capable of doing what you're
[quoted text clipped - 144 lines]
> >> > Name])"
> >> > End Sub
Douglas J. Steele - 13 Jan 2008 16:40 GMT
Glad you got it working.

Incidentally, if your intent is to set all the fields to Required, the
following would be simpler:

Sub FixTeam_table()
Const conTable = "1GBBU Teams"

Dim tdf As DAO.TableDef
Dim fld As DAO.Field

 Set dbs = DBEngine(0)(0)

 Set tdf = dbs.TableDefs(conTable)
 For Each fld In tdf.Fields
   fld.Properties("Required") = True
 Next fld
 dbs.Execute "CREATE UNIQUE INDEX idxTeamNameID ON [1GBBU Teams]([Team
Name])"
End Sub

And something I just noticed. Year is not a good name for a field. It's a
reserved word, and reserved words should never be used for your own
purposes. For a good discussion of names to avoid, see what Allen Browne has
at http://www.allenbrowne.com/AppIssueBadWord.html

Signature

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

> Doug,
>
[quoted text clipped - 169 lines]
>> >> > Name])"
>> >> > End Sub
Jamie Collins - 14 Jan 2008 14:37 GMT
On Jan 13, 12:09 pm, "Douglas J. Steele"
<NOSPAM_djsteele@NOSPAM_canada.com> > > You need to use strictly DAO.
ADO is not capable of doing what you're
> trying to make it do.

If you think that you cannot use ADO to ensure a column is NOT NULL or
execute a CREATE INDEX statement then think again.

Jamie.

--
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2009 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.