Newsgroup: it.comp.appl.access
Titolo: Modifiche ai BE

Sto studiando il modulo RELEASE in Enrico Oemi per aggiungere campi e
tabelle ai vari BE.
uso, nell'ordine:
1) la funzione di apertura del BE
2) n volte la funzione aggiungicampo(..)
3) la funzione di chiusura del BE
Perchè la riga seguente
tdef.Fields.Append fld
mi dice "operazione non supportata su tabelle collegate" ?
E' vero che si tratta di una tabella collegata, ma ho circa 200 BE da
modificare: volevo usare un mdb, dargli l'elenco dei BE (già disponibile in
una tabella) e fargli digerire il ciclo di aggiornamenti.
Grazie
-- 
 Fabio Dalla Villa

  Fabio Dalla Villa
@Alex

  Fabio Dalla Villa
@Alex
Grazie.
Vero tutto, riflettendo .. potevo arrivarci.
200BE:
si tratta di una applicazione che gestisce acquedotti per conto di un
gestore. L'applicazione può linkare ciascun acquedotto e tener in linea solo
quello interessato. Ognuno ha la sua contabilità separata.
gli stessi acquedotti hanno subito molte modifiche, per cui lo stesso
acquedotto è stato spezzato a seconda dei periodi storici e a seconda che
venga gestita la rete pubblica o i canoni di scarico e depurazione dei
pozzi.
Alla fine si tratta di 2 gestori x 40 acquedotti circa ciascuno, ma devo
rendere leggibili anche gli archivi storici.
Comunque per un ciclo, che siano 2 o 2000 i BE, poco importa.
Sono riuscito a far funzionare via codice come dicevi tu.
Mi manca un ultimo passaggio, un blocco della funzione "aggiungicampo()":
If Not IsMissing(descr) Then
        Set prp = fld.CreateProperty("description", dbText)
        prp.Value = descr
        fld.Properties.Append prp
End If
Si tratta della descrizione del campo o dell'etichetta che compare quando il
campo ha il focus in una maschera?
Io vorrei dare la descrizione del campo, ma mi ritorna un errore: "errore di
run-time '13'    Tipo non corrispondente".

Fabio DALLA VILLA ha detto: in data 03/08/2006 11.36:

per usare il modulo con vari BE io faccio così (se hai mantenuto i nomi 
delle funzioni dovrebbe essere facilmente comprensibile):
Set rst = curentdb.OpenRecordset("Tbl_nomi_BE", dbOpenDynaset)
     rst.MoveLast
     rst.MoveFirst
   Do While Not rst.EOF
         DbAttivo = rst![PercorsoBE] & "\" & rst!NomeBE & ".mdb" 
'adattala alla tua tabella ovviamente
         REL_ApriBE DbAttivo
         aggiungiCampo "NomeTabella", "NomeCampo", dbLong, , , 0
         REL_Chiudi
     rst.MoveNext
   Loop
a me funziona senza problemi.. non so se era questo che intendevi

 a me funziona senza problemi.. non so se era questo che intendevi
Sì, grazie.
Come fai a dare le proprietà del campo?

Fabio DALLA VILLA ha detto: in data 03/08/2006 14.50:

quali proprietà?
dalla funzione si possono impostare:
Tipo As Integer ' tipo di dato (dbinteger, dblong, ecc)
dimensioni As Long 'dimensione del campo (per lo più per i campi testo
incrementa As Boolean = False ' mai usato
default As Variant' valore di default
descr As String' descrizione del campo
e semplicemente aggiungendo i parametri d'ingresso:
per le altre proprietà dovresti controlla l'oggetto field
aggiungiCampo "NomeTabella", "NomeCampo", dbLong, , , 0 ' creo un campo 
nella tabella "nometabella" con il nome "nomecampo" di tipo long con 
valore iniziale a 0
ciao
Nick

Nick ha scritto:

Si ma se non gli passi le 3 Funzioni/Sub che hai usato come fà a
sapere cosa fanno...?
Queste per capirci:
REL_ApriBE DbAttivo
aggiungiCampo "NomeTabella", "NomeCampo", dbLong, , , 0
REL_Chiudi
@Alex

 ha scritto nel messaggio 
news:1154615402.3...@p79g2000cwp.googlegroups.com...
Nick ha scritto:


Queste per capirci:

Ma un esempiuccio da scaricare su qualche sito per noi poveri ignoranti no 
eh?
Saluti Andrea 

 valore iniziale a 0
Se controlli l'altra risposta, ho postato il blocco che mi dà problemi: è la
proprietà "descr", ma posso anche farne a meno perchè non è essenziale. Già
che studiavo l'argomento, mi sarebbe piaciuto impostare un modulo "completo"
di tutte le proprietà, da riutilizzare le prossime volte.
Grazie.

VedoTondo ha detto: in data 03/08/2006 17.08:

le funzioni si trovano sul sitocomune (FAQ 1.9)
ciao
Nick

 ....

prova a postare la tua stringa con cui crei il campo che vediamo come 
mai non va.. sulla carta la funzione ... funziona... (inserisco le 
descrizioni senza problemi)
non è che per caso la tua descrizione ha un ' (apostrofo o virgolette) 
che mandano in "palla" la stringa da passare alla function?
hai provato a passare il parametro con chr(34) prima e dopo il tuo testo?
Ciao
Nick

 Nick
Ho disattivato "On Error Resume Next" per intercettare la linea che mi dà
errore.
Se ometto l'ultimo parametro di aggiungiCampo(), tutto funziona a
meraviglia.
A = REL_ApriBE(Me.Elenco1.Column(2))
B = aggiungiCampo("TVarie", "ggMora12", dbLong, 2, False, 0, "Giorni di
interesse legale")      'giorni di soli interessi legali
B = aggiungiCampo("TVarie", "tassoM2", dbDouble, 6, False, 0, "tasso di
interesse moratorio")   'tasso di interesse moratorio aggiuntivo
C = REL_Chiudi()
Function aggiungiCampo(tabella As String, campo As String, tipo As Integer,
_
    Optional dimensioni As Long, Optional incrementa As Boolean = False, _
    Optional default As Variant, Optional descr As String) As Boolean
    Dim tdef As TableDef, fld As Field
    Dim prp As Property
    'Set dbs = CurrentDb
    Set tdef = dbs.TableDefs(tabella)
    Set fld = tdef.CreateField(campo, tipo, dimensioni)
    If fld.Type = dbLong And incrementa = True Then fld.Attributes =
dbAutoIncrField
    If Not IsNull(dimensioni) Then fld.Size = dimensioni
    If Not IsMissing(default) Then fld.DefaultValue = default
    'On Error Resume Next
    tdef.Fields.Append fld
    If Not IsMissing(descr) Then
        Set prp = fld.CreateProperty("description", dbText)  'qui dà errore
RUN-TIME 13 - TIPO NON CORRISPONDENTE
        prp.Value = descr
        fld.Properties.Append prp
    End If
    If Err Then
        aggiungiCampo = False
    Else
        aggiungiCampo = True
    End If
End Function
Uso A2002 e XP.
Grazie
Ciao

 
Ho provato a togliere "on error resume next" e non mi da alcun errore, 
ho anche messo tutti i parametri come hai fatto tu (io di solito quelli 
che non mi interessano li ometto) e non mi da alcun errore, l'unica 
differenza è che io non associo il risultato della function ovvero 
scrivo l'istruzione come :
aggiungiCampo "TVarie", "ggMora12", dbLong, 2, False, 0, "Giorni di 
interesse legale"
Anche io uso A2002 e WinXP non so proprio da cosa possa dipendere l'errore..
cmq ci penso..
ciao
Nick