Home

Come caricare/aggiornare gli articoli di un minimagazzino con Base



Il magazzino creato precedentemente può venire aggiornato in maniera automatica con una macro, nel caso in cui dobbiamo prelevare dei dati (tipico: articolo e prezzo) da dei files che otteniamo periodicamente, creando i nuovi rticoli mancanti e aggiornando quelli già presenti.

Si può fare creando un formulario molto semplice, con un solo campo di Selezione File, che troviamo negli Altri campi di controllo formulario, ed assegnando all'evento Testo modificato la sub CaricaAggiornaArticoli presente nella seguente macro:

REM ***** BASIC *****

Option Explicit



REM definizione delle variabili

Dim Context As Object

Dim Db As Object

Dim Conn As Object

Dim Stat As Object

Dim Result As Object

Dim m() As New com.sun.star.beans.PropertyValue

Dim oDesktop As Object

Dim oCell As Object

Dim oCell0 As Object

Dim oCell2 As Object

Dim oDoc As Object

Dim oSheet As Object

Dim oCursor As Object

Dim oAddress As Object

Dim nrCelle As Double

Dim Url As String

Dim sUrl As String

Dim i As Integer

Dim articolo As String

Dim prezzo As Currency



Sub CaricaAggiornaArticoli

rem ----------------------------------------------------------------------

Context = createUnoService("com.sun.star.sdb.DatabaseContext") REM connessione al db

Db = Context.getByName("MagProva") REM nome del db

Conn = Db.getConnection("user","password") REM se la connessione non richiede utente e password, lasciare vuoto ("","")

Stat = Conn.CreateStatement()

rem ----------------------------------------------------------------------

oDesktop = createUnoService("com.sun.star.frame.Desktop")



prelevaNome REM lanciamo la funzione che prende il nome del file attualmente indicato nel campo Selezione File del formulario



if msgBox ("Prelevo il file: " & Url , 4) = 7 then REM controlliamo se non è stato selezionato niente, in tal caso usciamo dalla sub

exit sub

else

sUrl = convertToUrl(Url)

REM carichiamo il foglio di calcolo con i dati degli articoli e cerchiamo l'ultima riga

oDoc = oDesktop.loadComponentFromUrl(sUrl , "_blank" , 0, m())

oSheet = oDoc.Sheets(0)

oCursor = oSheet.createCursor()

oCursor.gotoStart()

oCursor.gotoEnd()

oCell = oCursor.getCellByPosition(0,0)

oAddress = oCell.getCellAddress()

nrCelle = oAddress.Row

REM facciamo una loop su tutte le righe per cercare i dati, quindi controlliamo che siano presenti o no nel database, nel primo caso li aggiorniamo, nel

REM secondo li aggiungiamo

for i=1 to nrCelle

oCell0 = oSheet.getCellByPosition (0,i)

articolo = oCell0.string

oCell2 = oSheet.getCellByPosition (1,i)

prezzo = oCell2.getvalue



Result = Stat.executeQuery ("SELECT Articoli.ArtId , Articoli.descrizione , Articoli.prezzo FROM mag.Articoli "_

+" WHERE Articoli.descrizione = '"+articolo+"' ")

If Result.next Then

Stat.executeUpdate ("UPDATE mag.Articoli SET Articoli.prezzo="+prezzo+" WHERE Articoli.descrizione = '"+articolo+"'")

Else

Stat.executeUpdate ("INSERT INTO mag.Articoli ( descrizione, prezzo) VALUES ('"+articolo+"','"+prezzo+"') ")

EndIf

next i



endif

conn.close()

end sub



sub prelevaNome

Dim oForm, oControl

oForm = ThisComponent.Drawpage.Forms.getByName("Standard")

oControl = oForm.getByName("FileSelection")

Url = oControl.Text()

end sub



Questo qui sotto è il formulario. La macro sopra va assegnata all'evento Tasto del mouse premuto del campo PushButton Esegui l'aggiornamento.




Contatti, suggerimenti e, perché no, segnalazioni di errori: egio@tuxfamily.org

© 2007 Sergio Corato: tutti i documenti di questo sito sono rilasciati con licenza LGPL v. 2.1 o successiva.


Ultima modifica: 04/01/08