non so voi, ma io ultimamente sto lavorando sia su MDB che MYSQL (sullo stesso progetto)...

di base non costruisco mai le tabelle manualmente, ma mi faccio degli script che le creano per i fatti loro...

data la differenza sostanziale della costruzione di una tabella fra MYSQL e MDB (il CREATE TABLE cambia soprattutto nelle tipologie di dati) ho fatto una piccola classe

questa piccola classe non è propriamente generale, ma è specifica per il mio lavoro...

non considera alcuni tipi di dati, e probabilmente ignora esigenze specifiche di altri...

però comunque può venirvi utile come base

io la metto qui...

[se avete appunti o modifiche fate pure che schifo non mi fanno]

class.createtable.asp
codice:
<%
Class class_createtable
	Public database		'accept "mdb" or "mysql"
	Private dbaField()
	
	Private Sub Class_Initialize()
		call clearFields()
	end sub
	
	''/**  
	' * Clear the field array for a new table
	' *  
	' * @name	addfield
	' * @vers	1.0
	' * @since	2.0b

	' */
	public sub clearFields()
		
		redim dbaField(2,0)
		dbaField(2,0) = ""
		dbaField(1,0) = ""
		dbaField(0,0) = ""
		
	end sub
	
	''/**  
	' * Add a field to the array
	' *  
	' * @name	addfield
	' * @vers	1.0
	' * @since	2.0b
	' * 
	' * @param	(string) fieldName 		- name of the field
	' * @param	(string) fieldType		- type of the field
	' * @param	(string) fieldParam		- parameter of the field (for VARCHAR and others)

	' */
	public sub addField(fieldName, fieldType, fieldParam)
		redim preserve dbaField(2,ubound(dbaField,2)+1)
		dbaField(0,ubound(dbaField,2)) = fieldName
		dbaField(1,ubound(dbaField,2)) = fieldType
		dbaField(2,ubound(dbaField,2)) = fieldParam
	end sub
	
	''/**  
	' * Create the table using the array dbaField
	' *  
	' * @name	createTable
	' * @vers	1.0
	' * @since	2.0b
	' * 
	' * @param	(string) tableName 		- name of the table
	' * @return (string)				- the SQL string to create a table

	' */
	public function createTable(tableName)
		dim SQL,ii
		SQL = "CREATE TABLE " & tableName & " ("
		for ii = 1 to ubound(dbaField,2)
			SQL = SQL & dbaField(0,ii) & " "
			SQL = SQL & convertType(dbaField(1,ii))
			if dbaField(2,ii) <> "" then SQL = SQL & "(" & dbaField(2,ii) & ")"
			SQL = SQL & ", "
		next
		SQL = left(SQL,len(SQL)-2)
		SQL = SQL & ");"
		
		createTable = SQL
	end function
	
	''/**  
	' * Convert dbaField type to real
	' *  
	' * @name	convertType
	' * @vers	1.0
	' * @since	2.0b
	' * 
	' * @param	(string) fieldType 		- type of field
	' * @return (string)				- string type of field

	' */
	private function convertType(fieldType)
	
		select case database
			case "mdb"
				select case fieldType
					case "counter"
					convertType = "COUNTER UNIQUE NOT NULL PRIMARY KEY"
					case "byte"
					convertType = "BYTE"
					case "date"
					convertType = "DATETIME"
					case "short"
					convertType = "SHORT"
					case "long"
					convertType = "LONG"
					case "currency"
					convertType = "CURRENCY"
					case "char"
					convertType = "TEXT"
					case "varchar"
					convertType = "TEXT"
					case "memo"
					convertType = "LONGTEXT"
				end select
			case "mysql"
				select case fieldType
					case "counter"
					convertType = "INT(10) AUTO_INCREMENT UNIQUE NOT NULL PRIMARY KEY"
					case "byte"
					convertType = "TINYINT (3) UNSIGNED"
					case "date"
					convertType = "DATETIME"
					case "short"
					convertType = "SMALLINT UNSIGNED"
					case "long"
					convertType = "INT UNSIGNED"
					case "currency"
					convertType = "BIGINT UNSIGNED"
					case "char"
					convertType = "CHAR"
					case "varchar"
					convertType = "VARCHAR"
					case "memo"
					convertType = "LONGTEXT"
				end select
		end select
		
	end function
	
end class
%>
file esemplificativo

test.asp
codice:
<%
dim obj
set obj = new class_createtable
obj.database = "mdb" ' or "mysql"

call obj.clearFields()
call obj.addField("test_id","counter","")
call obj.addField("test_title","varchar","25")
call obj.addField("test_order","byte","")
response.write obj.createtable("tba_test") & "
"

set obj = nothing
%>
la funzione CREATETABLE restituisce la stringa SQL da far poi eseguire tramite il solito
CONN.EXECUTE

se si fanno più tabelle è necessario usare il CLEARFIELDS e poi ricominciare ad aggiungere ADDFIELD

tramite OBJ.DATABASE si imposta il tipo di database che si sta usando (che determina l'ouput)...
"mysql" oppure "mdb"...

ci vuole poco (come si intuisce) ad ampliarla anche per altri database

le tipologie di dati le trovate nel SELECT CASE della classe
cmq fondamentalmente ho messo i principali...
(ho evitato i BLOB che non uso mai...)

saluti