Newsgroup: it.comp.appl.access
Titolo: Popolare campo in una tabella

Salve a TUTTI,
Mi trovo nella situazione di importare da un file di testo dei dati  in una
tabella. Il campo che ho definito "CDC" contiene il nome del centro di
costo. Nella tabella ci sono poi altri campi che contengo il nome della
ditta esecutrice, il numero degli adetti ecc. Così come vengono importati
però, il primo campo CDC non è popolato su tutte le righe, mentre gli altri
campi si. Avrei bisogno di popolare il campo nelle righe vuote. Vorrei
scrivere una query che dicesse: se il campo CDC ha la riga vuota, allora
scrivi quello che trovi nella precedente, altrimenti lascia quello che c'è.
In questo modo risolverei il mio problema. Purtroppo non so come scrivere la
query.
Scusate la banalità dell'esposizione, ma spero di essermi spiegato
Grazie a TUTTI
Fabio


Ma è una roba una tantum?? Numero di righe inferiore  a 65000 e
spiccioli?
Se sì
Soluzione da PRATICONE:
1) Importa in Excel
2) nella prima colonna vuota (ad es Z) scrivi in Z2 la formula
SE(A2="";A1;A2) dove al posto di A metterai la colonna con CDC e poi
incollala per tutti i valori
3) copia i valori della colonna Z sopra la colonna A ed elimina
colonna Z
4) importa da Excel in Access
Se no la cosa piu semplice mi sa che è con VBA e un recordset...
F.

Ma č una roba una tantum?? Numero di righe inferiore  a 65000 e
spiccioli?
Se sě
Soluzione da PRATICONE:
1) Importa in Excel
2) nella prima colonna vuota (ad es Z) scrivi in Z2 la formula
SE(A2="";A1;A2) dove al posto di A metterai la colonna con CDC e poi
incollala per tutti i valori
3) copia i valori della colonna Z sopra la colonna A ed elimina
colonna Z
4) importa da Excel in Access
Se no la cosa piu semplice mi sa che č con VBA e un recordset...
F.
Grazie di avere risposto.
Francamente sto cercando di automatizzare un processo e per questo sono
uscito da Excel. Purtroppo non so scrivere in VBA, per questo cerco qui
aiuto. Se possibile con un esempio da adattare. Oppure qualsiasi altra
soluzione applicabile.
Grazie a TUTTI
Fabio

 Fabio
Premesso che sono smanettone autodidatta (e anceh un po'
forumdidatta):
non ho capito bene cosa vuoi fare
1) il file di testo da importare da dove deriva?
2) ogni quanto devi fare questa importazione in access?
3) hai quindi creato un database in access perfettamente funzionante
solo che periodicamente ti serve alimentarlo con dati esterni di cui
al punto1?
F.

 ha scritto nel messaggio
news:ba3118e7-3598-4a3c...@t54g2000hsg.googlegroups.com...
Premesso che sono smanettone autodidatta (e anceh un po'
forumdidatta):
non ho capito bene cosa vuoi fare
1) il file di testo da importare da dove deriva?
2) ogni quanto devi fare questa importazione in access?
3) hai quindi creato un database in access perfettamente funzionante
solo che periodicamente ti serve alimentarlo con dati esterni di cui
al punto1?
F.
Il file da importare arriva da un CMMS che prevede una stampa. Anzichè
utilizzare la stampante ho la possibilità di creare un file di testo.
Ripeto l'operazione tutti i giorni.
Ho creato un db di Access che con una macro importa, con delle query
"pulisce" da tutte le etichette e le cose inutili previste per la stampa su
carta, il db non è perfettamente funzionante, ma ritengo di riuscire a
renderlo, se supero lo scoglio per il quale ho postato.
Questa è la situazione.
Ciao Fabio

 ha scritto nel messaggionews:ba3118e7-3598-4a3c...@t54g2000hsg.googlegroups.com...

Ricordati di dire una preghierina di ringraziamento a Beato Costarella
e San Mazza da parte mia!
' Dichiaro le variabili
Dim RstDati As New ADODB.Recordset
Dim CNDati As New ADODB.Connection
Dim stringaSQLDati As String
Dim MyCDCTemp as String
Set RstDati = New ADODB.Recordset   ' imposto nuovo recodset
Set CNDati = CurrentProject.Connection  ' Imposto nuova connessione
per Recordset
stringaSQLDati = "SELECT * FROM TuaTabella;"  ' Imposto stringa SQL,
(tutta la tua tabella)
RstDati.Open stringaSQLDati, CNDati, adOpenKeyset, adLockOptimistic '
Apro recordset= tua tabella
Do Until RstDati.EOF  ' ciclo fino alla fine del recorset
If isnull(RstDati![CDC]) or (RstDati![CDC])= ""  Then ' se i campo CDC
è nullo o vuoto
(RstDati![CDC])=MyCDCTemp ' prendi il valore memorizzato nel ciclo
precedente (il giochino non funzia se il primo valore CDC della
tabella è vuoto)
rstDati.Update  ' memorizza il recordset modificato
End If
MyCDCTemp = (RstDati![CDC]) ' memorizza nella variabile MyCDCTemp il
valore del CDC (così al prox giro se trovo il campo vuoto ci metto
questo)
RstDati.MoveNext ' vai al record successivo
Loop 'fai un nuovo ciclo
rstDati.close ' chiudi recordset
set rstdati= nothing ' imposta variabile a nulla
P.S.
quello sopra il codice che ti serve
1) fai una copia di backup del DB prima di testarlo
2) se crei un tasto e relativo evento click prima del mio codice puoi
mettere
a) DoCmd.RunMacro "TuaMacroDiImportazione" ' esegui la macro per
l'importazione
b) ' una o più query di "pulizia"
Dim MySQL1 As String
    MySQL1 = " qui ci devi mettere sql della tua query"
    DoCmd.RunSQL MySQL1
(se ne vuoi altre copia e incolla b e ad 1 sostituisci 2)
F.

 ha scritto nel messaggio
news:941a53b2-e0c2-4feb...@m44g2000hsc.googlegroups.com...
Ricordati di dire una preghierina di ringraziamento a Beato Costarella
e San Mazza da parte mia!
' Dichiaro le variabili
Dim RstDati As New ADODB.Recordset
Dim CNDati As New ADODB.Connection
Dim stringaSQLDati As String
Dim MyCDCTemp as String
Set RstDati = New ADODB.Recordset   ' imposto nuovo recodset
Set CNDati = CurrentProject.Connection  ' Imposto nuova connessione
per Recordset
stringaSQLDati = "SELECT * FROM TuaTabella;"  ' Imposto stringa SQL,
(tutta la tua tabella)
RstDati.Open stringaSQLDati, CNDati, adOpenKeyset, adLockOptimistic '
Apro recordset= tua tabella
Do Until RstDati.EOF  ' ciclo fino alla fine del recorset
If isnull(RstDati![CDC]) or (RstDati![CDC])= ""  Then ' se i campo CDC
č nullo o vuoto
(RstDati![CDC])=MyCDCTemp ' prendi il valore memorizzato nel ciclo
precedente (il giochino non funzia se il primo valore CDC della
tabella č vuoto)
rstDati.Update  ' memorizza il recordset modificato
End If
MyCDCTemp = (RstDati![CDC]) ' memorizza nella variabile MyCDCTemp il
valore del CDC (cosě al prox giro se trovo il campo vuoto ci metto
questo)
RstDati.MoveNext ' vai al record successivo
Loop 'fai un nuovo ciclo
rstDati.close ' chiudi recordset
set rstdati= nothing ' imposta variabile a nulla
P.S.
quello sopra il codice che ti serve
1) fai una copia di backup del DB prima di testarlo
2) se crei un tasto e relativo evento click prima del mio codice puoi
mettere
a) DoCmd.RunMacro "TuaMacroDiImportazione" ' esegui la macro per
l'importazione
b) ' una o piů query di "pulizia"
Dim MySQL1 As String
    MySQL1 = " qui ci devi mettere sql della tua query"
    DoCmd.RunSQL MySQL1
(se ne vuoi altre copia e incolla b e ad 1 sostituisci 2)
F.
Piů che una Preghiera dovrň accendere dei ceri!!!
Grazie a TUTTI ora provo ad applicare il codice. Spero proprio di riuscirci.
Fabio

 ha scritto nel messaggio
Stasera sono riuscito ad applicare il codice.
Grazie ancora a TUTTI.
Fabio