-
Errore macro copia interi, numeri con decimali da calc a base
scusate ma mi sono di nuovo perso.
da un file calc devo passare i dati in una tabella base
il file calc con un solo foglio è cosi composto (foglio 0)
cella C7----------->in base corrisponde a Integer
formattazione -->numero standard (codice formato=standard)
valore =8
cella C8 ---------->in base corrisponde a decimale(16,2)
formattazione -->numero 2 decimali 1zero iniz (codice
formato=#.##0,00)
valore =12,85
cella C9----------->in base corrisponde a decimale(16,2)
formattazione -->numero 2 decimali 1zero iniz (codice
formato=#.##0,00)
valore =500,56
cella C10----------->in base corrisponde a decimale(16,2)
formattazione -->numero 2 decimali 1zero iniz (codice
formato=#.##0,00)
valore= risultato formula (=(C8*C9)/100)
Cella C11----------->in base corrisponde a decimale(16,2)
formattazione -->numero 2 decimali 1zero iniz (codice
formato=#.##0,00)
valore= risultato formula (=(C8*C9)/100+C9)
provo questa macro:
Sub pollo
connessione=connettiDB("Gest-Cantieri")
auno=doppio(LeggiCellaPerNome(0,"C7"))
adue=doppio(LeggiCellaPerNome(0,"C8"))
atre=doppio(LeggiCellaPerNome(0,"C9"))
aqua=doppio(LeggiCellaPerNome(0,"C10"))
acin=doppio(LeggiCellaPerNome(0,"C11"))
comando="INSERT INTO
""TSalsa"" (""IDRif"",""TotMan"",""TotMat"",""TotLavTerzi""," "TotSpeseTec"")VALUES('"+auno
+"','"+adue+"','"+atre+"','"+aqua+"','"+acin+"' )"
EXupdate(connessione,comando)
rem----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem
----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelpe r")
rem
----------------------------------------------------------------------
dim DB as object
dim Connetti as object
dim Context as object
Context=CreateUnoService("com.sun.star.sdb.Databas eContext")
If Not Context.hasByName("Gest-Cantieri") Then
Msgbox "Error. the database is not registered"
Exit Sub
End If
DB=Context.getByName("Gest-Cantieri")
Connetti=DB.getconnection("","")
Connetti.flush()
MsgBox "Dati Inseriti in Archivio"
end sub
'_______________________________________________
Function LeggiCellaPerNome (foglio,nomecella)
' Leggi una stringa da una cella
Doc = ThisComponent
Sheet = Doc.Sheets(foglio)
Cell = Sheet.getCellRangeByName(nomecella)
LeggiCellaPerNome=Cell.Value
End function
'_________________________________________________ _________________
Function connettiDB(nomedb)
DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext ")
DataSource = DatabaseContext.getByName(nomedb)
If Not DataSource.IsPasswordRequired Then
Connection = DataSource.GetConnection("","")
Else
InteractionHandler
=createUnoService("com.sun.star.sdb.InteractionHan dler")
Connection = DataSource.ConnectWithCompletion(InteractionHandle r)
End If
connettiDB=Connection
End function
' ________________________________________________
Function EXupdate(conn as object,cmd as string)
Statement = conn.createStatement()
Statement.executeUpdate(cmd)
end function
'_________________________________________________ ________
Function doppio(U)
' raddoppia gli apostrofi
U = Join(Split(U, "'"), "''")
doppio=U
end function
' __________________________________________________ _
Function SELquery(connessione as object,cmd as string)
Statement = connessione.createStatement()
Statement = connessione.PrepareStatement(cmd)
SELquery = Statement.executeQuery()
end function
' __________________________________________________ __
e mi da questo errore
Tipo di dato errato java.lang.Number.FormatException
provato dati uno alla volta
provato a sostituire Value con string
ma sempre errore
cosa potrei fare?
-
Re: Errore macro copia interi, numeri con decimali da calc a base
> cosa potrei fare?
Vabbè puoi fare alcune prove.
Tanto per iniziare prova a non utilizzare la funzione 'doppio'.
Vedo che lavora anche con i numeri ma nasce in realtà per le stringhe e
serve unicamente per raddoppiare gli apostrofi.
Il punto secondo me sta sull'uso della virgola (secondo la
localizzazione italiana) e del punto come separatore dei decimali.
Insomma sono un po' arrugginito sull'uso dei db ...
Probabilmente è un problema di formato.
Assegna direttamente da linea di programma le variabili che inserirai
nel db e vedi come si comporta (prova con numeri reali e con stringhe).
-
Re: Errore macro copia interi, numeri con decimali da calc a base
Il 11/10/2011 20.05, martello ha scritto:
>
>> cosa potrei fare?
>
> Vabbè puoi fare alcune prove.
>
> Tanto per iniziare prova a non utilizzare la funzione 'doppio'.
> Vedo che lavora anche con i numeri ma nasce in realtà per le stringhe e
> serve unicamente per raddoppiare gli apostrofi.
>
> Il punto secondo me sta sull'uso della virgola (secondo la
> localizzazione italiana) e del punto come separatore dei decimali.
>
> Insomma sono un po' arrugginito sull'uso dei db ...
> Probabilmente è un problema di formato.
>
> Assegna direttamente da linea di programma le variabili che inserirai
> nel db e vedi come si comporta (prova con numeri reali e con stringhe).
>
Come non detto ... la stringa di comando è una stringa quindi devi
concatenare delle stringhe.
Quindi i tuoi numeri devono essere convertirti in stringe con il formato
giusto per il db.
Il problema potrebbe essere legato come già detto all'uso del separatore
decimale (punto oppure virgola).
-
Re: Errore macro copia interi, numeri con decimali da calc a base
On 11 Ott, 20:15, martello <"martelozzo1(martello)"@tin.it> wrote:
> Il 11/10/2011 20.05, martello ha scritto:
>
>
>
>
>
> >> cosa potrei fare?
>
> > Vabb puoi fare alcune prove.
>
> > Tanto per iniziare prova a non utilizzare la funzione 'doppio'.
> > Vedo che lavora anche con i numeri ma nasce in realt per le stringhe e
> > serve unicamente per raddoppiare gli apostrofi.
>
> > Il punto secondo me sta sull'uso della virgola (secondo la
> > localizzazione italiana) e del punto come separatore dei decimali.
>
> > Insomma sono un po' arrugginito sull'uso dei db ...
> > Probabilmente un problema di formato.
>
> > Assegna direttamente da linea di programma le variabili che inserirai
> > nel db e vedi come si comporta (prova con numeri reali e con stringhe).
>
> Come non detto ... la stringa di comando una stringa quindi devi
> concatenare delle stringhe.
> Quindi i tuoi numeri devono essere convertirti in stringe con il formato
> giusto per il db.
> Il problema potrebbe essere legato come gi detto all'uso del separatore
> decimale (punto oppure virgola).
in effetti ho fatto un test inserendo "a mano" un intero e un decimale
con il punto e tutto fila liscio.
ora vedo di capire come trasformare questo suggerimento in codice :-)
grazie
-
Re: Errore macro copia interi, numeri con decimali da calc a base
On 12 Ott, 06:34, grotta continua <grottaconti...@gmail.com> wrote:
> On 11 Ott, 20:15, martello <"martelozzo1(martello)"@tin.it> wrote:
>
>
>
> > Il 11/10/2011 20.05, martello ha scritto:
>
> > >> cosa potrei fare?
>
> > > Vabb puoi fare alcune prove.
>
> > > Tanto per iniziare prova a non utilizzare la funzione 'doppio'.
> > > Vedo che lavora anche con i numeri ma nasce in realt per le stringhe e
> > > serve unicamente per raddoppiare gli apostrofi.
>
> > > Il punto secondo me sta sull'uso della virgola (secondo la
> > > localizzazione italiana) e del punto come separatore dei decimali.
>
> > > Insomma sono un po' arrugginito sull'uso dei db ...
> > > Probabilmente un problema di formato.
>
> > > Assegna direttamente da linea di programma le variabili che inserirai
> > > nel db e vedi come si comporta (prova con numeri reali e con stringhe).
>
> > Come non detto ... la stringa di comando una stringa quindi devi
> > concatenare delle stringhe.
> > Quindi i tuoi numeri devono essere convertirti in stringe con il formato
> > giusto per il db.
> > Il problema potrebbe essere legato come gi detto all'uso del separatore
> > decimale (punto oppure virgola).
>
> in effetti ho fatto un test inserendo "a mano" un intero e un decimale
> con il punto e tutto fila liscio.
> ora vedo di capire come trasformare questo suggerimento in codice :-)
> grazie
ho trasformato le celle numeriche decimali con
=TESTO(A9;"########,##")
sostituito la virgola
=SOSTITUISCI(B9;",";".")
e ora c'è questo errore
variabile dell'oggetto non impostata sulla riga
Function EXupdate (conn as object, cmd as string) che ha valore
0: Exupdate(connessione=, comando=INSERT INTO
"TSalsa"("IDRif","TotMan","TotMat","TotLavTerzi"," TotSpeseTec")VALUES('8','12.85','500.56','564.88', '64.32'))
-
Re: Errore macro copia interi, numeri con decimali da calc a base
Il 12/10/2011 8.32, grotta continua ha scritto:
> On 12 Ott, 06:34, grotta continua<grottaconti...@gmail.com> wrote:
>> On 11 Ott, 20:15, martello<"martelozzo1(martello)"@tin.it> wrote:
>>
>>
>>
>>> Il 11/10/2011 20.05, martello ha scritto:
>>
>>>>> cosa potrei fare?
>>
>>>> Vabb puoi fare alcune prove.
>>
>>>> Tanto per iniziare prova a non utilizzare la funzione 'doppio'.
>>>> Vedo che lavora anche con i numeri ma nasce in realt per le stringhe e
>>>> serve unicamente per raddoppiare gli apostrofi.
>>
>>>> Il punto secondo me sta sull'uso della virgola (secondo la
>>>> localizzazione italiana) e del punto come separatore dei decimali.
>>
>>>> Insomma sono un po' arrugginito sull'uso dei db ...
>>>> Probabilmente un problema di formato.
>>
>>>> Assegna direttamente da linea di programma le variabili che inserirai
>>>> nel db e vedi come si comporta (prova con numeri reali e con stringhe).
>>
>>> Come non detto ... la stringa di comando una stringa quindi devi
>>> concatenare delle stringhe.
>>> Quindi i tuoi numeri devono essere convertirti in stringe con il formato
>>> giusto per il db.
>>> Il problema potrebbe essere legato come gi detto all'uso del separatore
>>> decimale (punto oppure virgola).
>>
>> in effetti ho fatto un test inserendo "a mano" un intero e un decimale
>> con il punto e tutto fila liscio.
>> ora vedo di capire come trasformare questo suggerimento in codice :-)
>> grazie
>
> ho trasformato le celle numeriche decimali con
>
> =TESTO(A9;"########,##")
>
> sostituito la virgola
>
> =SOSTITUISCI(B9;",";".")
>
> e ora c'è questo errore
>
> variabile dell'oggetto non impostata sulla riga
> Function EXupdate (conn as object, cmd as string) che ha valore
>
> 0: Exupdate(connessione=, comando=INSERT INTO
> "TSalsa"("IDRif","TotMan","TotMat","TotLavTerzi"," TotSpeseTec")VALUES('8','12.85','500.56','564.88', '64.32'))
>
Non saprei ...
Prova ad aggiungere all'inizio della macro
Dim connessione as object
Così tanto per toglierci dei dubbi ...
-
Re: Errore macro copia interi, numeri con decimali da calc a base
On 12 Ott, 16:54, martello <"martelozzo1(martello)"@tin.it> wrote:
> Il 12/10/2011 8.32, grotta continua ha scritto:
>
>
>
>
>
>
>
>
>
> > On 12 Ott, 06:34, grotta continua<grottaconti...@gmail.com> *wrote:
> >> On 11 Ott, 20:15, martello<"martelozzo1(martello)"@tin.it> *wrote:
>
> >>> Il 11/10/2011 20.05, martello ha scritto:
>
> >>>>> cosa potrei fare?
>
> >>>> Vabb puoi fare alcune prove.
>
> >>>> Tanto per iniziare prova a non utilizzare la funzione 'doppio'.
> >>>> Vedo che lavora anche con i numeri ma nasce in realt per le stringhee
> >>>> serve unicamente per raddoppiare gli apostrofi.
>
> >>>> Il punto secondo me sta sull'uso della virgola (secondo la
> >>>> localizzazione italiana) e del punto come separatore dei decimali.
>
> >>>> Insomma sono un po' arrugginito sull'uso dei db ...
> >>>> Probabilmente un problema di formato.
>
> >>>> Assegna direttamente da linea di programma le variabili che inserirai
> >>>> nel db e vedi come si comporta (prova con numeri reali e con stringhe).
>
> >>> Come non detto ... la stringa di comando una stringa quindi devi
> >>> concatenare delle stringhe.
> >>> Quindi i tuoi numeri devono essere convertirti in stringe con il formato
> >>> giusto per il db.
> >>> Il problema potrebbe essere legato come gi detto all'uso del separatore
> >>> decimale (punto oppure virgola).
>
> >> in effetti ho fatto un test inserendo "a mano" un intero e un decimale
> >> con il punto e tutto fila liscio.
> >> ora vedo di capire come trasformare questo suggerimento in codice :-)
> >> grazie
>
> > ho trasformato le celle numeriche decimali con
>
> > =TESTO(A9;"########,##")
>
> > sostituito la virgola
>
> > =SOSTITUISCI(B9;",";".")
>
> > e ora c'è questo errore
>
> > variabile dell'oggetto non impostata sulla riga
> > Function EXupdate (conn as object, cmd as string) che ha valore
>
> > 0: Exupdate(connessione=, comando=INSERT INTO
> > "TSalsa"("IDRif","TotMan","TotMat","TotLavTerzi"," TotSpeseTec")VALUES('8','12.85','500.56','564.88', '64.32'))
>
> Non saprei ...
> Prova ad aggiungere all'inizio della macro
>
> Dim connessione as object
>
> Così tanto per toglierci dei dubbi ...
ho trovato tanti libri con altre soluzioni e ora sono allo studio .
per il problema specifico l'errore era che non mi leggeva le celle con
le funzioni, boh... appena trovo quella giusta la giro qui
p.s. naturalmente tutti i suggerimenti erano azzeccati!! grazie
-
Re: Errore macro copia interi, numeri con decimali da calc a base
> ho trovato tanti libri con altre soluzioni e ora sono allo studio .
Tanti ... quanti?
E quali?
Se non li conosciamo già ... :-)
-
Re: Errore macro copia interi, numeri con decimali da calc a base
On 15 Ott, 14:37, martello <"martelozzo1(martello)"@tin.it> wrote:
> > ho trovato tanti libri con altre soluzioni e ora sono allo studio .
>
> Tanti ... quanti?
> E quali?
> Se non li conosciamo già ... :-)
che casino con sti messaggi che non si leggono...
comunque i libri sono i soliti
faccio un messaggio nuovo o elenco qui?
beh intanto ecco:
http://www.pitonyak.org/OOME_3_0.odt
http://www.pitonyak.org/database/AndrewBase.odt
Programmation OpenOffice.org 3 : Macros OOoBasic et API -->http://
ebookee.org/go/?u=http://depositfiles.com/files/y372ihc3o
http://www.eyrolles.com/Chapitres/97...s_marcelly.pdf
(la parte finale del libro)
Capitolo sui database di "Learn OpenOffice.org Spreadsheet Macro
Programming by Mark Bain" -->
http://www.packtpub.com/sites/defaul...m_campaign=pdf
spagnolo: http://www.correolibre.net/archivos/...doOOoBasic.odt
"mi sembra" ci sia un faccone di questo group che mi sono trasformato
in html
qualcosa c'è anche su tutorial nel forum italiano
se invece ne conoscete altri voi sono ben graditi
Permessi di invio
- Non puoi inserire discussioni
- Non puoi inserire repliche
- Non puoi inserire allegati
- Non puoi modificare i tuoi messaggi
Regole del Forum