rilevante


  rilevante > microsoft.* > microsoft.office.access

 #1  
21.02.2012, 15:16
Ricky
Ciao,

faccio riferimento al thread di www.sitocomune.com
"1.35 Come si possono modificare via codice le proprietà dei campi di
tabella? (2)"

Dove posso trovare un elenco dei FieldType e dei Format?
Ho provato a guardare nella Help, ma non ho trovato nessun link che li
indichi.

PS: il codice elimina il contenuto originale. Esiste un modo di
evitarlo, se cambio solo il formato e non il tipo di valore?

Vi ringrazio
Ricky


Sub sChangeField(strTableName As String, strFieldName As String,
strFieldType As String)
Dim db As DAO.Database
Dim strSQL As String
Set db = CurrentDb
' Aggiunge il Nuovo Campo nella Tabella con un Nome
Temporaneo(TempField)
strSQL = "ALTER TABLE [" & strTableName & "] ADD COLUMN
[TempField] " & strFieldType & ";"
db.Execute strSQL
' Copia i Dati dal Campo Esistente al Nuovo
strSQL = "UPDATE DISTINCTROW [" & strTableName & "] SET [" &
strFieldName & "]=[TempField];"
db.Execute strSQL
' Elimina il Vecchio campo
strSQL = "ALTER TABLE [" & strTableName & "] DROP COLUMN [" &
strFieldName & "];"
db.Execute strSQL
' Rinomina il Nuovo Campo con il nome del campo esistente
db.TableDefs(strTableName).Fields("TempField").Nam e = strFieldName
Set db = Nothing
End Sub

La Sub sChangeField() può essere richiamata nel seguebte modo:

Call sChangeField("tblName","fldName","TEXT(100)")
 #2  
21.02.2012, 17:40
Karl Donaubauer
Ricky wrote:
>...
> faccio riferimento al thread di [..]
> "1.35 Come si possono modificare via codice le proprietà dei campi di
> tabella? (2)"
>
> Dove posso trovare un elenco dei FieldType e dei Format?
> Ho provato a guardare nella Help, ma non ho trovato nessun link che li
> indichi.
>
> PS: il codice elimina il contenuto originale. Esiste un modo di
> evitarlo, se cambio solo il formato e non il tipo di valore?
> ...


Da JET 4 = 1999 questo procedimento per cambiare il tipo di
un campo è invecchiato. Vedi l'ultimo paragrafo di

Cambiare il tipo dati di un campo via codice
http://www.donkarl.com/it?FAQ3.5

Con la proprietà Format è più complicata perché si tratta di
una proprietà di Access non di JET/ACE e devi usare DAO
o ADO per cambiarla.

Un elenco dei tipi di dati trovi con <F1> nella vis. struttura di
una tabella, per l'uso in SQL invece lo trovi p.e. qui:
http://msdn.microsoft.com/en-us/libr...tsql_datatypes

Non è chiaro cosa intendi con "se cambio solo il formato".
Dai un esempio su cosa vuoi ottenere.
 #3  
22.02.2012, 07:50
Ricky
On 21 Feb, 19:40, "Karl Donaubauer" <NoS> wrote:
> Da JET 4 = 1999 questo procedimento per cambiare il tipo di
> un campo è invecchiato. Vedi l'ultimo paragrafo di
>
> Cambiare il tipo dati di un campo via codicehttp://www.donkarl.com/it?FAQ3.5


Ciao Karl,
ho provato il codice con una tabella con 3 campi, tentando di variare
la lunghezza di un campo testo da 255 a 100 caratteri.

db.Execute "ALTER TABLE MiaTabella ALTER COLUMN MioCampo VARCHAR(100)"

Ottengo messaggio di runtime error 424 'Object required'
Utilizzo Office 2007



> Con la proprietà Format è più complicata perché si tratta di
> una proprietà di Access non di JET/ACE e devi usare DAO
> o ADO per cambiarla.


hai una Faq a proposito?


> Un elenco dei tipi di dati trovi con <F1> nella vis. struttura di
> una tabella, per l'uso in SQL invece lo trovi p.e. qui:[..]...


Visto, grazie

> Non è chiaro cosa intendi con "se cambio solo il formato".
> Dai un esempio su cosa vuoi ottenere.


Casi classici per il mio utilizzo è questo:
- passare da un DataType Number senza formato esplicitato ad un
formato standard 1.234,56
- passare da un DataType Date/Time con formato General Date ad un
formato Shot Date.

Buona giornata
Ricky
 #4  
22.02.2012, 10:43
Karl Donaubauer
Ricky wrote:
> Karl Donaubauer wrote:
>> ...
>> Cambiare il tipo dati di un campo via codice
>> [..]

>
> ho provato il codice con una tabella con 3 campi, tentando di
> variare la lunghezza di un campo testo da 255 a 100 caratteri.
>
> db.Execute "ALTER TABLE MiaTabella ALTER COLUMN MioCampo
> VARCHAR(100)"
>
> Ottengo messaggio di runtime error 424 'Object required'
> Utilizzo Office 2007


Forse la causa è la tua definizione di "db".
Non si puo dire molto se non copia/incolla il tuo vero
e completto codice rilevante.

>> Con la proprietà Format è più complicata perché si tratta di
>> una proprietà di Access non di JET/ACE e devi usare DAO
>> o ADO per cambiarla.

>
> hai una Faq a proposito?


No.

> Casi classici per il mio utilizzo è questo:
> - passare da un DataType Number senza formato esplicitato ad un
> formato standard 1.234,56
> - passare da un DataType Date/Time con formato General Date ad un
> formato Shot Date.


Un esempio per l'ultimo caso:

On Error GoTo ErrProp

Dim db As DAO.Database
Dim tdf As DAO.TableDef
Dim prp As DAO.Property
Dim fld As DAO.Field

Set db = CurrentDb
Set tdf = db.TableDefs("TuaTabella")

Set fld = tdf.Fields("TuoCampo")
fld.Properties("Format") = "Short Date"

ExitProp:
Set db = Nothing
Exit Sub


ErrProp:
If Err.Number = 3270 Then
Set prp = fld.CreateProperty("Format", dbText, "Short Date")
fld.Properties.Append prp
Resume ExitProp
End If

Altri esempi trovi su google groups ecc. con una cerca
per "CreateProperty".
 #5  
27.02.2012, 14:59
Ricky
On 22 Feb, 12:43, "Karl Donaubauer" <NoS> wrote:
>
> Un esempio per l'ultimo caso:

cut
> Altri esempi trovi su google groups ecc. con una cerca
> per "CreateProperty".


Grazie Karl,
e scusa se non ti riposto prima.

Buona giornata
Ricky
Discussioni simili
DAO tipi di Recordset

Ciao, uso Access 2000 (DAO) e ho notato quanto segue: Se separo la mia applicazione, mettendo le tabelle in un file mdb e il codice VBA, query e quant'altro in un altro,...

elenco ricavato da recordset

ho una tabella contenente nominativi con cap "utenti" ho una tabella contenente tutti i cap e i parentid delle provincie e regioni relative "CAPtot" quando in zona imposto...

[ADO] Recordset.Sort con Recordset aperto da un Command.Execute adCmdStoredProc

Ciao a tutti ! Come da oggetto, popolo un recordset (RcST) tramite un Execute di un Command (Cmnd) dove Cmnd è una StoredProcedure. In Rcst non riesco a fare .Sort ... Ho...

[Pensierino] Tipi maschi e tipi femmine, mi raccomando.

Oh quei tipi tantrici che sopportano il solletico! Che nervi, no? E quelli che aspettano per aprire un regalo? Tutti con questa attesa dell'aura giusta... Brrr che freddo! Mi...


Tutti gli orari sono GMT. Attualmente sono le 00:36. | Privacy Policy