+ Rispondi
Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    grotta continua
    Guest

    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?


  2. #2
    martello
    Guest

    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).


  3. #3
    martello
    Guest

    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).

  4. #4
    grotta continua
    Guest

    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


  5. #5
    grotta continua
    Guest

    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'))


  6. #6
    martello
    Guest

    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 ...

  7. #7
    ivn
    Guest

    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

  8. #8
    martello
    Guest

    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à ... :-)

  9. #9
    grotta continua
    Guest

    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