Newsgroup: it.comp.appl.access
Titolo: alter table

Salve a tutti,
é possibile con un il comando ALTER TABLE convertire
una data da data/ora a solo data senza l'ora?
qual'è la sintassi se esiste?
grazie!
ringo 

 wrote in message
news:dgovka$an6$
1...@newsread.albacom.net

Ti allego un mio DEMO che dovresti trovare nel SC, ma
vorrei farti riflettere sul fatto che il tipo di dato scritto
dipende da te non solo dal Type definito.
Se infatti usi la funzione Now() questa restituisce tutto
ora compresa, se usi Date() oppure FIX(Now()) avrai solo la data.
Ritengo che invece di pensare alla modifica del campo sia più
efficace puntare l'attenzione proprio a come e dove riempi il
campo in questione che con una ragionevole certezza avrà
come DefaultValue=Now().
Quì ti allego il mio scritto:
'-----------------------------------------------------------------------
	MODIFICARE LE PROPRIETA' DI UN CAMPO
'-----------------------------------------------------------------------
Quando manualmente si modificano leproprietà di un Campo, Access
esegue durante questa operazione alcune azioni:
	-Aggiunge un Nuovo Campo con le Proprietà richieste 
	-Copia i Dati dal Campo Originale al Nuovo Campo
	-Elimina il vecchio campo 
Per questo se si vuole effettuare questa operazione via Codice si deve
effettuare la stessa sequenza di operazioni.
Quì trovate un Demo di Funzione che tramite predicato SQL esegue questo.
Purtroppo ci sono proprietà che via SQL non possono essere modificate
per questo
motivo è obbligatorio appoggiarsi a DAO(come in questo caso per
RINOMINARE il Campo)
Sub sChangeField(strTableName As String, strFieldName As String,
strFieldType As String)
    Dim db As 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").Name = strFieldName
    Set db = Nothing
End Sub 
Per chiamare questa Sub potete fare così::
Call sChangeField("tblName","fldName","TEXT(100)")
Pensa a quanto suggerito.
@Alex
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 qual'č la sintassi se esiste?
L'unica cosa che puoi fare č cambiare l'ora a 00:00. Allora:
ALTER TABLE cambia la struttura di un campo.
Tu invece vuoi solo cambiare il valore nel campo.
Per questo basta una query di aggiornamente con l'espressione:
Fix([TuoCampoData])
In SQL:
UPDATE TuaTabella SET TuoCampoData= Fix([TuoCampoData]);
-- 
HTH
Karl
*********
Access FAQ: 
www.donkarl.com/it
+ Conferenza Italiana per Sviluppatori di Access (CISA) 

 ...
Ciao Alex,
Come descritto nella mia
FAQ 3.5 Cambiare il tipo dati di un campo via codice
questo serie di operazione è un po' antiquato visto che già
da A00 (=1999) esiste ALTER COLUMN.
...e una volta in più ;-) devi aggiungere che
DISTINCTROW
non fa niente ma invece è complettamente ignorato da JET
se viene "applicato" ad una sola tabella.
-- 
cu


 se viene "applicato" ad una sola tabella.
Anche questo me lo avevi già detto, sono di COCCIO.
Ciao Karl.
@Alx



benissimo!
grazie!
ringo 

ops....
se faccio:
"UPDATE Tabella1 SET Tabella1.data = Fix("data");"
e la eseguo mi dice:
"tipi di dati non corrispondenti nell'espressione criterio"
Tabella1:
   ID data
      1 08/01/2005 14.30.00
      2 08/01/2005 15.50.00
      3 08/01/2005 1.00.00
      4 08/01/2005 1.00.00
      5 08/01/2005 1.00.00
data di tipo data/ora
grazie!
ringo 

sorry!!!!
c'è un'errore di sintassi.....sul campo data servono
le quadre e non le virgolette....
ringo