Newsgroup: it.comp.appl.access
Titolo: formato tracciati record

Ho un problema che mi affligge, ho la necessità di esportare dei dati di
tabbelle del mio database access in file testo e questo lo farei con la
procedura guidata, il problema è che il risultato che viene fuori con la
procedura non assomiglia per niente a quello che servirebbe a me per poter
importare con un altro programma di contabilità. Vi posto qui i tracciati
record cosi capite cosa intendo:
Questo è il tracciato record che richiede il programma di contabilità
riferito al singolo documento di vendita:
Contenuto "Documenti vendita"
 Begin
  CL ,"SCAR" ,"00353240237" ,"" ,"Scar Srl" ,"Viale Caduti del Lavoro, 25"
,"37012" ,"BUSSOLENGO" ,"VR" ,"ITALIA" ,False ,"045/6768318" ,""
,"045/6768400" ,False ,"IT" ,"EUR" ,False ,"Sig. Zago/Sig. Rossignolo"
,"
sross...@scar.it
" ,"01011000" ;
  TD ,"Fattura" ,True ,False ,True ,False ,False ,False ,False ,False ,True
,True ,"000437" ,"20030731" ,"20030731" ,"Contratto Nr 02/0000053 09/08/20"
,"" ,"20030731" ,"" ,False ,"" ,"20030731" ,"Salvo buon fine" ,"" ,False ,""
;
  TT ,"" ,"" ,"RBFM3" ,"BPVRAGD" ,"" ,"FE" ,"" ,"VEN" ,"" ,"EUR" ,"" ,"" ,""
,"" ,"" ,0.000000,False ,"" ;
  RA ,1,"Descrittiva" ,"" ,False ,False ,"Riferimento Contratto Nr.
02/0000053 del 09/08/2002" ,0,"" ,0,False ,"" ,"" ;
  RA ,2,"Descrittiva" ,"" ,False ,False ,"Small Web 20 Mb  12 mesi +
mantenimento Dominio" ,0,"" ,0,False ,"" ,"" ;
  RA ,3,"Descrittiva" ,"" ,False ,False ,"" ,0,"" ,0,False ,"" ,"" ;
  RA ,4,"Descrittiva" ,"" ,False ,False ,"Periodo dal 01/08/2003 al
31/07/2004" ,0,"" ,0,False ,"" ,"" ;
  RA ,5,"Descrittiva" ,"" ,False ,False ,"Servizi compresi:" ,0,"" ,0,False
,"" ,"" ;
  RA ,6,"Servizio" ,"SMALLWEB20" ,False ,False ,"small Web di  20Mb    per
12    mesi" ,0,"" ,0,False ,"" ,"" ;
  RB ,"" ,"NR."
,1.000000,0.000000,0.000000,0.000000,0.000000,465.000000,"20"
,465.000000,558.000000,False ;
  RC ,0.000000,0.000000,0.000000,"Normale" ,"07011005" ,0,""
,0.000000,0.000000,0.000000,"" ,"" ,"" ,"" ,"" ,True ,0,0.000000,""
,0.000000,0.000000,0.000000,0.000000,"" ,"" ,False
,0.000000,0.000000,0.000000,"" ,"" ,True ,0.000000,True ,True ,"" ,True
,0.000000,True ,0.000000,True ;
  RA ,7,"Servizio" ,"DOMINIOIT" ,False ,False ,"Registrazione Dominio .it"
,0,"" ,0,False ,"" ,"" ;
  RB ,"" ,"NR." ,1.000000,0.000000,0.000000,0.000000,0.000000,25.000000,"20"
,25.000000,30.000000,False ;
  RC ,0.000000,0.000000,0.000000,"Normale" ,"07011005" ,0,""
,0.000000,0.000000,0.000000,"" ,"" ,"" ,"" ,"" ,True ,0,0.000000,""
,0.000000,0.000000,0.000000,0.000000,"" ,"" ,False
,0.000000,0.000000,0.000000,"" ,"" ,True ,0.000000,True ,True ,"" ,True
,0.000000,True ,0.000000,True ;
  RS ,1,"Ricevuta bancaria" ,"20030905" ,493.620000,98.720000;
  CA
,493.620000,98.720000,592.340000,0.000000,490.000000,0.000000,0.000000,592.3
40000,0.000000,0.000000;
  CB
,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.0
00000,3.620000,0.000000,0.000000,0.000000,0.000000,"" ,False ,""
,0.000000,0.000000,"ES15" ,"20" ,True ,True ,True ,True ,True ,False ,False
,0.000000,"" ,False ,"" ,0.000000,True ,0.000000,True ;
  CS ,"" ,"" ,"" ,"" ,0,0.000000,0.000000,0.000000,"20030731" ,17,52,"" ,""
,"" ,"" ,"" ,"" ,True ,True ,True ,True ;
 End
Come potete vedere ogni riga è contrassegnata da un riferimento che
contraddistingue la tabella di riferimento (CL=clienti ) etc....
mentre quello che esporta access ha tutto un altro formato ossia i record
sono elencati uno sotto l'altro e un file per ogni tabella, mentre quello
che vedete qui sopra è il formato di ogni singolo record che poi a loro
volta sono separati dall'istruzione BEGIN - END
Scusate se non mi sono spiegare ma non sono pratico di queste cose e non so
proprio come fare.
grazie.

Sidia Vr4 ha scritto:

Se devi prendere i dati da più tabelle puoi usare una query con UNION
SELECT che raggruppi tutte le tabelle, crearti per ogni tabella il campo
tipo tebella (CL, TD, TT...), esportare la query su file di testo separato
da virgole ed aggiungere il Begin e End a mano o con uno script.
(e ricordati di salvare le specifiche di esportazione se non vuoi rifare
tutto la volta successiva!)
Sennò puoi fare tutto il lavoro in automatico con un programmino in visual
basic ma devi conoscere un minimo di comandi per scrivere sui file e
scorrere i recordset.
Namor
-- 
 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it


grazie della risposta, purtroppo il vb non lo conosco.....provero a
documentarmi su questo UNION SELECT.
Ma i record per ogni tabella sono disposti uno sotto l'altro, per esempio su
una tabella clienti i record sono incolonnati, mentre in esportazione mi
serviranno divisi: esempio
1:
begin
    clienti: cmapo 1 etc.....
    fatture: campo1 etc...
end
2:
begin
    clienti: campo 1 etc.....
    fatture: campo 1 etc...
end
3:
etc....tutto in un file
č questo quello che non ho ben chiaro su come fare.
lo script come lo devo fare?
grazie della tua risposta.

 ha scritto nel messaggio
news:bhve4d$k86$1...@newsread.albacom.net...

Credo che una buona soluzione sia quella di editare un file di testo.
Ti riporto un frammneto di codice che apre un file arbitrario e vi accoda
dei valori:
In questo modo potrai scrivere tutto quello che vuoi.
Ciao, Carlo
Dim n As Integer
Dim MyIndex, FileNumber, RCS As Recordset, CodKit As String, NomeKit As
String
FileNumber = FreeFile
CodKit = Me.Kit
NomeKit = DLookup("DescrStampa", "SQKit", "Codice =" & """" & CodKit & """")
Set RCS = CurrentDb.OpenRecordset("DimmiEtichettaStampaKit")
RCS.MoveLast
RCS.MoveFirst
Open "MioTesto1" For Output As #FileNumber
Print #FileNumber, "^@" & vbCrLf
Print #FileNumber, "^H^L1^O4^P-0548-0299^M1^S1^F050000210Arial Black," &
NomeKit & vbCrLf
Print #FileNumber, "Cod. " & CodKit & vbCrLf
Print #FileNumber, "^H^L1^O4^P-0480-0299^M1^S1^F050000180Arial Narrow," & "
N° " & RCS!Quantita & " " & RCS!DescrStampa & vbCrLf
RCS.MoveNext
For n = 1 To RCS.RecordCount - 1
Print #FileNumber, " N° " & RCS!Quantita & " " & RCS!DescrStampa & vbCrLf
RCS.MoveNext
Next n
Print #FileNumber, "^!" & vbCrLf
Close #FileNumber
RCS.Close
Set RCS = Nothing

 grazie della tua risposta.
UNION SELECT è un'istruzione SQL, praticamente si tratta di scrivere delle
query a mano senza usare l'autocomposizione, ma se devi prendere tutti i
campi di ciascuna tabella è semplice.
Le varie tabelle devono avere lo stesso numero di campi.
Per quanto riguarda l'ordinamento, bisogna vedere che campi usi nelle tue
tabelle; se hai un IDcliente o un campo simile lo puoi usare per ordinare
i blocchi di dati ed usare un campo di comodo "ord" per ordinare i record
all'interno di ciascun blocco.
Ti potrebbe venire più o meno così:
SELECT "CL" as tiporecord, 1 AS ord, * FROM tabella-clienti
UNION SELECT "TD" as tiporecord, 2 AS ord, * FROM tabella-fatture
UNION SELECT "TT" as tiporecord, 3 AS ord, * FROM tabella3
UNION SELECT "XX" as tiporecord, 4 AS ord, * FROM tabella4
ORDER BY IDcliente, ord;
Per quanto riguarda l'inserimento dei Begin ed End dovresti creare una
tabella "delimitatore" con lo stesso numero di campi delle altre,
aggiungere all'inizio un campo testo "tiporecord" ed uno numerico "ord",
inserire due record uno con tiporecord="Begin" ed ord=0 ed uno con
tiporecord="End" ed ord=9, fare una query (SENZA JOIN!) con la tabella
clienti per creare per prodotto cartesiano un record Begin ed uno End per
ciascun IDcliente, ed usarla per delimitare i blocchi:
SELECT * FROM query-delimitatore
UNION SELECT "CL" as tiporecord, 1 AS ord, * FROM tabella-clienti
UNION SELECT "TD" as tiporecord, 2 AS ord, * FROM tabella-fatture
UNION SELECT "TT" as tiporecord, 3 AS ord, * FROM tabella3
UNION SELECT "XX" as tiporecord, 4 AS ord, * FROM tabella4
ORDER BY IDcliente, ord;
Ovviamente nelle specifiche d'esportazione non andranno esportati i campi
"ord" ed "IDcliente", usati solo per l'ordinamento.
Questo è solo uno spunto, non è detto che funzioni subito, andrà
sicuramente ritoccato qua e là.
In conclusione il problema non è tanto semplice ma credo che si possa
risolvere anche senza visual basic, pur se non avendo il db sotto gli
occhi è difficile farsi un'idea precisa delle possibili soluzioni e dei
problemi che inevitabilmente sorgeranno durante l'implementazione.
Se hai a portata di mano qualche esperto di Access o di database in
generale è ora di andarlo a chiamare!
(A meno che non posti sul newsgroup la struttura completa delle tabelle e
trovi qualche volonteroso che ti scrive il codice completo VBA per
esportare i dati nel formato che ti serve!)
