Clicca QUI
 
homepage opencommercio forum downloads le nostre faq progetti maxdev documentazione accedi al tuo profilo  
Menu Principale
Articoli recenti
Categorie

Come importare prodotti da MS Access
 

Tratto da http://forums.oscommerce.com/viewtopic.php?t=42580


Autore Paulino P Myatt

Traduzione: A Gagliani, capra at openitalia.net


Come importare prodotti da MS Access


Volendo importare 150000 prodotti da un database Access su OpenCommercio, EasyPopulate non è un prodotto adatto, impiegando troppo tempo (500 file di 300 voci per file a 30 secondi per file!), ho scoperto un modo più semplice, studiando le tabelle.


Cosa ci serve:

- MS Access (ho usato v97)

- MyODBC (ho usato v3.51) con un DSN funzionante che punta a OpenCommercio

- OpenCommercio 2.2CVS (testato in locale usando phpdev)

- phpMyAdmin ( v2.50rc1) funzionante

- una tabella di prodotti in Access (una riga per prodotto, solo inglese)


Step 1 – Configura le Categorie

Mi serviva solo uan categoria, così l'ho impostata nel Pannello di Admin, dopo ho aperto

phpmyadmin > database di OpenCommercio> descrizione_categorie> identificato il numero ID della nuova categoria.


Step 2 – Creare gli ID Prodotti in Access

Serve il campo che sarà il vostro ID prodotto in OpenCommercio. Se non avete dei prodotti esistenti nel vostro negozio OpenCommercio, create un nuovo campo nella vostra tabella products di tipo Contatore, chiamatelo ID (o simile) e Access inserirà in automatico i valori per voi. Se avete già dei prodotti nel vostro negozio OpenCommercio e volete conservarli, allora seguito il prossomo passaggio.


Step 2a - Opzionale (se dovete creare il campo ID prodotti partendo da un numero specifico):

- Invece di creare un campo di tipo Contatore (step 2), create un campo numerico e chiamatelo ID (o qualcosa del genere).

- In Access cliccare il menu Moduli e poi il tasto Nuovo.

- Cancellate le due righe che iniziano con la parola Option e incollate il codice seguente:


Option Explicit

Dim mlngCounter As Long


Function ResetCounter()

mlngCounter = 9999

End Function


Function GetNextCounter(pvar As Variant) As Long

mlngCounter = mlngCounter + 1

GetNextCounter = mlngCounter

End Function



- Cambiate "9999" del codice col numero da cui l'ID prodotti deve partire, diminuito di uno.

- Chiudete la finestra e salvate. Chiamate il modulo come volete, es. Populate.

- Cliccate sul menu Query, poi il tasto Nuovo, poi OK per la visualizzazione struttura.

- Non selezionate nessuna tabella, e cliccate su Chiudi.

- Selezionate SQL e sostituite il comando "SELECT;" con:



SELECT ResetCounter() FROM [database];



- Eseguite la nuova query cliccando il tasto "!" .

- Salvate la query (es. Reset Counter)

- Create una nuova query seguendo il procedimento descritto sopra, ma questa volta sostituite il "SELECT;" con:


UPDATE [vostra_tabella_prodotti_access] SET [vostra_tabella_prodotti_access ].ID = GetNextCounter([ID]);



- Sostituite il nome tabella e i nomi dei singoli campi.

- Eseguite la query selezionando il tasto "!" .

- Chiudete e salvate la query (es. "Populate ID field"). Controllate il risultato visualizzando la tabella.

- Se il campo ID dei prodotti parte da un numero superiore a quello voluto (può succedere se avete fatto un anteprima della query), eseguite la query precedente "Reset Counter", cancellate il campo ID e ripartite da step 2a.


Step 3 – Creare link esterni

- Menu File > Carica dati esterni > Collega tabelle

- Nel campo "Tipo file" selezionate "ODBC Databases()"

- Se non avete impostato una sorgente dati per MySQL/OpenCommercio, impostatene una (cliccate Nome DSN > Nuovo > SQL server...)

- Selezionate la tabella Prodotti. Testate la nuova icona Access appena creata con un doppio clic.

- Ripetere step 3 per le tabelle Product_Descriptions e Products_to_Categories.

- Dovreste avere ora tre link di tabella esterna in Access.


Step 4 – Creare le tre query di accodamento

- Create una nuova query usando la visualizzazione struttura.

- Selezionate Aggiungi e aggiungete la vostra tabella Prodotti di Access e chiudete.

- Cambiate il tipo di query cliccando col tasto destro > Tipo query > Query di accodamento.

- Nel campo Nome query selezionate Products (cioè la tabella esterna di OpenCommercio).

- Clicccate nella prima colonna sulla riga “Accoda a”, selezionate "products_id"

- Nella riga superiore selezionate il campo ID creato in step 2 (o 2a)

- Ripetere il procedimento per tutti i campi presenti nel menu a discesa di “Accoda a “.

- Prima di eseguire la query (col tasto "!"), fate una anteprima dal menu Visualizza > Visualizzazione Figlio Dati

- Ripetere il procedimento per le altre due tabelle prodotti Product_Descriptions e Products_to_Categories.


Da notare:

- I prezzi non possono avere un valore nullo. Ho dovuto usare la funzione nz per sostituire lo zero con un valore prefissato, es:


PRICEFIX:nz([price],0)



- Per la data odierna, ho inserito la funzione DATE() nella riga del campo.

- Per la lingua English ho inserito 1 nel campo (in OpenCommercio 1 corrisponde alla lingua italiana).


Conclusione

Con un pò di ragionamento e qualche conoscenza di MS Access, le tabelle di OpenCommercio possono essere gestite anche da Access.


 
 
Un altro progetto di MAX s.o.s.
Crediti Powered by MDPro