Drawbridge.Jack at ic.gc.ca
Drawbridge.Jack at ic.gc.ca
Mon Sep 20 11:04:47 CDT 2004
Here's code that could do the job, but I'd be real cautious about losing
existing data.
Private Sub TestThis()
Dim fld As Field
Dim dbs As DATABASE
Dim tbl As TableDef
Set dbs = CurrentDb()
'
'== Do the DATATYPE Change to Integer
'
For Each tbl In dbs.TableDefs
If Left$(tbl.NAME, 2) = "t_" Then
For Each fld In tbl.Fields
If fld.NAME <> "t_proj" And fld.NAME <> "t_pt" And _
fld.NAME <> "t_plink" And fld.NAME <> "ptlink" _
And fld.NAME <> "t_species" Then
Debug.Print "Before change: - " & tbl.NAME & " - field Name
/Type : " & fld.NAME & "/" & fld.Type
dbs.Execute "ALTER TABLE " & tbl.NAME _
& " DROP column " & fld.NAME & ";"
dbs.Execute "ALTER TABLE " & tbl.NAME _
& " Add column " & fld.NAME & " integer;"
'Debug.Print "After change: - " & tbl.NAME & " - field Name
/Type : " & fld.NAME & "/" & fld.Type
Else
End If
Next fld
Else
End If
Next tbl
dbs.Close
'
'===CHECK The results of datatype change ==============
Set dbs = CurrentDb
For Each tbl In dbs.TableDefs
If Left$(tbl.NAME, 2) = "t_" Then
For Each fld In tbl.Fields
If fld.NAME <> "t_proj" And fld.NAME <> "t_pt" And _
fld.NAME <> "t_plink" And fld.NAME <> "ptlink" _
And fld.NAME <> "t_species" Then
Debug.Print "After change: - " & tbl.NAME & " - field Name /Type : "
& fld.NAME & "/" & fld.Type
Else
End If
Next fld
Else
End If
Next tbl
Beep
MsgBox "Done"
dbs.Close
End Sub
jack
-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com]On Behalf Of Paul Black
Sent: Tuesday, September 14, 2004 6:17 PM
To: accessd at databaseadvisors.com
Subject: [AccessD] Problem with code to change field data type in vba
Hi
I using Access 97 and can not get the following to work:
Private Sub Command0_Click()
Dim fld As Field
Dim dbs As Database
Dim tbl As TableDef
Set dbs = CurrentDb()
For Each fld In tbl.Fields
If Left$(tbl.Name, 2) = "t_" And fld <> "t_proj" And fld <> "t_pt" And
fld <> "t_plink" And fld <> "ptlink" And fld <> "t_species" Then
fld.Type = dbInteger
End If
Next fld
Beep
MsgBox "Done"
End Sub
It is supposed to change the field data type to integer from text. All field
names to change begin with 't_' excluding certain fields listed above. I
keep getting an error:
Runtime error '91'
Object Variable or With Block variable not set
Other than the excluded fields above all the data conatined in the fields is
numeric or has a Null value... but it is in a text field. The data is coming
to me off of a Pocket PC and it won't let me change the field type to
numeric.
Please help me solve this.
Thanks
PB
_________________________________________________________________
Get ready for school! Find articles, homework help and more in the Back to
School Guide! http://special.msn.com/network/04backtoschool.armx
--
_______________________________________________
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com