Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
File CSV e Database Access
domenica 09 giugno 2013 - 19.47
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Elenco Tags
Access (.mdb)
salvob
Profilo
| Newbie
8
messaggi | Data Invio:
dom 9 giu 2013 - 19:47
Salve, come al solito posto per chiedere aiuto
Sono ancora alle prese con un lavoro in access, purtroppo non ho grandi conoscenze su questo software ma per necessità lavorative sto dovendo imparare ad usarlo.
Ho un database con tre tabelle:
Fornitori:
ID,Fornitore
Prodotti:
ID,CodProdotto,Prodotto,Prezzo
Listino Fornitori:
ID,[CodProdotto,Prodotto],[Fornitore],Prezzo
Ho dei file csv che contengono un elenco di prezzi, vengono dai diversi fornitori, ma non contengono il dato "fornitore"
Quello che mi servirebbe è creare un piccolo form con due pulsanti, uno che mi consenta di importare dai file csv i prezzi dei fornitori (quindi aggiornando i prezzi già esistenti e consentendo l'inserimento di un campo manuale per specificare di quale fornitore si tratta) e uno che semplicemente esporti la mia tabella prodotti nello stesso identico formato del csv dei fornitori.
In buona sostanza i due pulsanti dovrebbero svolgere le seguenti funzioni:
Importa:
1) Chiedi all'utente di quale fornitore si sta aggiornando il listino (magari selezionabile dall'elenco della tabella Fornitori"
2) Caricare le righe del file csv e per ogni riga compire le seguenti verifiche:
a) Se il prodotto è nuovo (non presente quindi nel db) deve essere aggiunto un nuovo record alla tabella "Prodotti" e poi inserito il prezzo presente nel csv nella tabella "Listino Fornitori" con l'aggiunta del fornitore (specificato dall'utente al punto 1)
b) Se il prodotto è già esistente ma non è presente nel listino fornitori, aggiungere il record specificando il prezzo dal csv e il fornitore (vedi sempre punto 1)
c) Se il prodotto è presente sia nella tabella Prodotti che in quella Fornitori si deve semplicemente conforntare il prezzo di "Listino Fornitori" ed eventualmente aggiornarlo.
Esporta:
1) Esporta la tabella prodotti con lo stesso formato del csv dei fornitori
Il CSV dei fornitori ha il seguente formato
CodProdotto,Prodotto,Prezzo
A0001;"Oggetto";25,67
B0003;"Cosa";56,27
Fra l'altro nella tabella Listino Prodotti, i campi Prodotto e Cod Prodotto sono raggruppati in una colonna di ricerca guidata, posso trattarli separatamente nell'importazione?.
Io avevo iniziato a scrivere un codice simile nei pulsanti
PulsanteImport:
Private Sub Comando1_Click()
DoCmd.TransferText acImportDelim, "DBProductsOK", "Listino Fornitori", "E:\altri.csv", True
End Sub
PulsanteExport:
Private Sub Comando2_Click()
DoCmd.TransferText acExportDelim, "DBProductsOK", "Prodotti", "E:\mio.csv", True
End Sub
quel "DBProductsOK" sarebbe il nome del file di specifiche che ho creato facendo un importazione di un csv di un fornitore e salvando le specifiche da "avanzate..."
Il problema è che purtroppo sono completamente a digiuno di codice VBS e con le macro non saprei nemmeno da dove iniziare a fare una cosa del genere...
Credo che si debba creare un file schema.ini che contiene le specifiche d'importazione per collegare i campi delle tabelle a quelli del csv..
Vi prego illuminatemi, sono ore che arranco tra guide di access che spiegano le cose sempre in maniera troppo generica e ricerche su google che mi danno risultati confusionari..
Confido come sempre in un vostro prezioso suggerimento sulla direzione da seguire!!
CorriCorrado
Profilo
| Junior Member
86
messaggi | Data Invio:
lun 10 giu 2013 - 09:15
Ciao,
se leggi quando riportato nella guida trovi tutto:
expression .TransferText(TransferType, SpecificationName, TableName, FileName, HasFieldNames, HTMLTableName, CodePage)
http://msdn.microsoft.com/en-us/library/office/ff835958.aspx
A string expression that's the name of an import or export specification you've created and saved in the current database. For a fixed-width text file, you must either specify an argument or use a schema.ini file, which must be stored in the same folder as the imported, linked, or exported text file. To create a schema file, you can use the text import/export wizard to create the file. For delimited text files and Microsoft Word mail merge data files, you can leave this argument blank to select the default import/export specifications.
Corrado
salvob
Profilo
| Newbie
8
messaggi | Data Invio:
lun 10 giu 2013 - 19:16
Ciao Corrado, sono stato su quella pagina, in realtà la funzione va bene, il problema è che nel file csv i campi sono in un certo ordine, nelle mie tabelle i dati sono in ordine diverso e ci sono delle colonne aggiuntive.
Credo di aver capito quindi che lo schema.ini è da realizzare solamente per i csv non delimitati da un carattere ma per quelli a spaziatura fissa giusto?
In questo caso probabilmente piuttosto che importare i dati in una tabella converrebbe usare un dataset da cui fare le opportune verifiche prima di scrivere i dati sul database, ma come fare? non saprei da dove cominciare.
CorriCorrado
Profilo
| Junior Member
86
messaggi | Data Invio:
mer 12 giu 2013 - 08:04
Dalla mia esperienza, io ti sconsiglio di non utilzzare il fixed; con il delimitato, io ho salvato varie specifiche che vengono richiamate dalla funzione a seconda del file che sto caricando.
Per farlo, a seconda del file csv che stai caricando, potrai avere una specifica differente che richiamerai a seconda del tuo bisogno.
Ciao
Corrado
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !