Newsgroup: it.comp.appl.access
Titolo: Spostare l'ordine dei campi nel Design di una tabella

 
Non mi � ben chiaro se sia possibile modificare l'OrdinalPosition dei campi 
nel design di tabelle preesistenti.
Evitando di cancellare e ricreare i campi interessati...
 
Ciao a tutti e buon anno
 
 

Stai palando di Access?
 
Nel caso di SQLServer certamente risponderei NO
se sposti una colonna DEVI di fatto eliminarla 
( con indici e relazioni allegate ) 
per poi ricostruirla identica
 
Nel caso di Access non mi sono mai posto il preblema,  
ma pero il tema mi incuriosisce
 
.
 

  Ciao a tutti e buon anno
Donde viene quell'OrdinalPosition che par tanto essere una proprietï¿œ 
del campo e che io non ho mai sentito nominare?
 
Comunque se stai chiedendo se sia possibile modificare l'ordine fisico 
dei campi di una tabella, la risposta ï¿œ sï¿œ.
In modalitï¿œ design seleziona una riga e trascinala a piacimento sopra o 
sotto.
Non vi sarï¿œ alcuna influenza nï¿œ sulle indicizzazioni nï¿œ sulle 
relazioni.
 
Se ciï¿œ sia anche possibile via codice... direi di no, perï¿œ non mi gioco 
nemmeno un centesimo.
Bisognerebbe provare, ma adesso non ne ho voglia.
 
Bruno
 
 

 
"Simone Calligaris" <

La suddetta richiesta non � esposta in maniera chiarissima, quindi aggiungo 
chiarimenti:
 
- Database .MDB/ACCDB
- La modifica delle posizioni dei campi andrebbe operata a codice VB
 
 
 

Ciao Simone,
da quanto ho compreso, è possibile agire sulla proprietà in Oggetto.
Personalmente non ho verificato.
 
Questo è un'esempio di quello che contiene la GUIDA, che come vedi agisce sull'Oggetto TABLEDEF...[tdfEmployees] di NorthWind:
 
Sub OrdinalPositionX()
 
   Dim dbsNorthwind As Database
   Dim tdfEmployees As TableDef
   Dim aintPosition() As Integer
   Dim astrFieldName() As String
   Dim intTemp As Integer
   Dim fldTemp As Field
   Dim rstEmployees As Recordset
 
   Set dbsNorthwind = OpenDatabase("Northwind.mdb")
   Set tdfEmployees = dbsNorthwind.TableDefs("Employees")
 
   With tdfEmployees
      ' Display and store original OrdinalPosition data.
      Debug.Print _
         "Original OrdinalPosition data in TableDef."
      ReDim aintPosition(0 To .Fields.Count - 1) As Integer
      ReDim astrFieldName(0 To .Fields.Count - 1) As String
      For intTemp = 0 To .Fields.Count - 1
         aintPosition(intTemp) = _
            .Fields(intTemp).OrdinalPosition
         astrFieldName(intTemp) = .Fields(intTemp).Name
         Debug.Print , aintPosition(intTemp), _
            astrFieldName(intTemp)
      Next intTemp
 
      ' Change OrdinalPosition data.
      For Each fldTemp In .Fields
         fldTemp.OrdinalPosition = 1
      Next fldTemp
 
      ' Open new Recordset object to show how the 
      ' OrdinalPosition data has affected the record order.
      Debug.Print _
         "OrdinalPosition data from resulting Recordset."
      Set rstEmployees = dbsNorthwind.OpenRecordset( _
         "SELECT * FROM Employees")
      For Each fldTemp In rstEmployees.Fields
         Debug.Print , fldTemp.OrdinalPosition, fldTemp.Name
      Next fldTemp
      rstEmployees.Close
 
      ' Restore original OrdinalPosition data because this is
      ' a demonstration.
      For intTemp = 0 To .Fields.Count - 1
         .Fields(astrFieldName(intTemp)).OrdinalPosition = _
            aintPosition(intTemp)
      Next intTemp
 
   End With
 
   dbsNorthwind.Close
 
End Sub
 
Ciao
@Alex

 Sub OrdinalPositionX()
 Come al solito quei cervelloni MS fanno esempi del c....!
 
Sia "Classe" una tabella coi seguenti campi:
 1 - Studente
 2 - Materia
 3 - Condotta
 4 - Voto
 
Si voglia cambiare l'OrdinalPosition dei campi in:
 1 - Materia
 2 - Condotta
 3 - Voto
 4 - Studente
 
=====================================
Private Sub Command49_Click()
Dim db As Database, tDef As TableDef
Set db = CurrentDb
Set tDef = db.TableDefs("Classe")
 
tDef.Fields("Materia").OrdinalPosition = 1
tDef.Fields("Condotta").OrdinalPosition = 2
tDef.Fields("Voto").OrdinalPosition = 3
tDef.Fields("Studente").OrdinalPosition = 4
 
End Sub
=====================================
 
Bruno
 
 


 
 
Ciao Alessandro, devo assolutamente imparare a dar peso alla guida in linea!
 
In effetti era pi� semplice del previsto: le propriet� OrdinalPosition si 
possono riassegnare direttamente ai campi del TableDefs, e alla fine:
 
.......
 
 'Aggiorna insieme Fields
 
 Tdf.Fields.Refresh
 
 
 
.........
 
 
 
 
 
Saluti da Simone
 
 
 

La guida è meglio di un LIBRO...! ;-)
 
Come va tutto bene...?
 
Ciao, buone Feste.
@Alex

conferm, in visualizzazione in struttura, doppio clic sulla casella di testo, si apre il menu proprieta. Selezioni la scheda Altro, e trovi la voce Ordine di spostamento, cosi puoi spostare l'ordine con cui ti muoverei con il tab negli inserimenti
 


 
 
Va passabilmente, a parte un brutto raffreddamento  ;-/
 
Buon anno da Simone