Report Xojo Web

  1. 7 months ago

    Buona sera, ho scritto un appweb ora mi trovo a dover creare un report da una query (mysql) ovviamente mi sono accorto che non è più possibile costruirsi il report come sull'app desktop, dopo aver cercato per tutto il giorno navigando tra Valentina Report, Dyna PDF ecc.. chiedo aiuto.

    Ero abituato a crearmi i vari report così :
    dim g as graphics
    dim p as printerSetup
    p=new printerSetup
    if p.pagesetupDialog then
    g=openprinterdialog(p)
    end if
    g.bold=true
    g.textsize=15
    g.drawstring rs1.Field("DESC1").Value,2,20
    g.textsize=9
    ....
    ....
    Chiedo quale strada posso intraprendere per avere un report senza dover installare plugin o programmi terzi

    Un saluto e grazie
    Enrico

  2. Massimiliano C

    is not verified 4 May 2017 Europe (Italy, Bergamo)

    Se vuoi un plugin per generare un PDF ti mando il mio ...

  3. Massimiliano C

    is not verified 4 May 2017 Europe (Italy, Bergamo)

    Qui c'è il plugin che ti ho promesso , è semplice da usare, c'è l'esempio.
    Per la guida fai riferimento a FPDF da qui...
    Funziona anche a 64 bitty

    Nell'esempio c'è tutto quello che ti serve per farlo funzionare, poi ovviamente fai tutte le modifiche che vuoi.

  4. Massimiliano C

    is not verified 4 May 2017 Europe (Italy, Bergamo)
    Edited 7 months ago

    può anche stampare i barcode CODE 128, 3of9, Ean8, Ean13...

  5. Ciao, direi solo una cosa.... UNO SPETTACOLO!!!

    Grazie infinitamente!!!!

  6. Alexis C

    5 May 2017 Pre-Release Testers, Xojo Pro Puerto Rico, USA

    Valentina ADK for XOJO is the easy way to do it Print and PDF and Printing Direct from Web

  7. Massimiliano C

    is not verified 5 May 2017 Europe (Italy, Bergamo)

    Almeno questo è gratis....

  8. Thank you Alexis, but I wanted to try something free and the Massimiliano plugin really fuses

  9. Si vero Massimiliano e poi funziona davvero egregiamente, sto solo litigando con la funzione pdf.addpage che in debug non da problemi ma una volta pubblicato mi ritorna un nilobject... ma ci salto fuori!

    sempre grazie e spero a buon rendere

  10. Alexis C

    5 May 2017 Pre-Release Testers, Xojo Pro Puerto Rico, USA

    i do not see any free that works good like valentina with hard work

  11. Massimiliano C

    is not verified 5 May 2017 Europe (Italy, Bergamo)

    @Enrico LRosa Si vero Massimiliano e poi funziona davvero egregiamente, sto solo litigando con la funzione pdf.addpage che in debug non da problemi ma una volta pubblicato mi ritorna un nilobject... ma ci salto fuori!

    sempre grazie e spero a buon rendere

    Roba vecchia, lo sostituisco sempre nello short report di bkeeney al posto di dynapdf. Non mi ricordo se al costrutto di addpage devi fare altro prima o altro dopo il comando. Poi ci guardo e te lo dico

  12. Massimiliano C

    is not verified 5 May 2017 Europe (Italy, Bergamo)

    Ho fatto alcune prove e ti confermo che l'unico comando è pdf.addpage() che a me funziona su piattaforma MAC OS,
    Su windows al momento non ho possibilità di provare.

  13. si si ho trovato il problema nello scrivere ho inserito addpage senza le parentesi.... nella fretta... era una stupidata. :)
    grazie sempre

  14. Antonio R

    8 May 2017 Pre-Release Testers, Xojo Pro Europe (Italy)

    Puoi anche provare DynaPDF (per provarlo è gratuito)
    Il vantaggio è che è stabile e hai il pieno e totale controllo del documento PDF in tutte le sue parti

  15. Massimiliano C

    is not verified 8 May 2017 Europe (Italy, Bergamo)

    Il problema è che a volte per scrivere un software si è pagati una miseria e non si hanno risorse 'monetarie' tali per affrontare la spesa ...
    Comunque Enrico,
    Prima che finisci al reparto psichiatrico puoi notare che hai a disposizione una modifica di cell che si chiama cellcut; è identica a cell ma taglia il contenuto, quindi non effettua il 'word wrap' su un'altra cella, ti verrà utile...
    Getlunghezzatesto che riporta la dimensione di una cella; Millimetrata, che mostra la griglia nel formato 'carta millimetrata' che ti sarà utile per riempire moduli, e poi come ti dicevo prima Code39, Ean13, Interleave2of5,
    Se devi riempire dei moduli io ho adottato il sistema di inserire un'immagine nella pagina come sfondo.
    Ovvio che come dice Antonio con DynaPDF puoi compilare i moduli, ma ti serve la versione 'avanzata' che haimè costa parecchio.

  16. Antonio R

    8 May 2017 Pre-Release Testers, Xojo Pro Europe (Italy)

    Non è solo per le funzionalità avanzate, anche a livello base puoi fare molto (tabelle ad esempio) e molto semplicemente (una volta capito come funziona, ma la documentazione è enorme)

    Massimiliano, per quanto riguarda i costi è una questione di prospettive e di quanto valuti il tuo tempo. Se riesci a completare un lavoro in meno tempo e con meno "grane" devi bilanciare il costo con il tempo risparmiato che puoi rinvestire in altri progetti (guadagnando) o in serenità (che ha sempre il suo bel valore)
    Ragionando in questo modo si rischia di finire nel paradosso del venditore: "Non compro nulla così non ho spese..." però poi non capisce perché nessuno visita il suo negozio ... che è vuoto!

    La versione base costa poco (in termini di ore di lavoro) e sta a te poi sfruttare questa possibilità in altri progetti.

  17. Massimiliano C

    is not verified 8 May 2017 Europe (Italy, Bergamo)

    Per carita, abbiamo comperato DYNAPDF, la versione base,
    La documentazione è enorme, davvero un fiume, ma funziona bene...
    Purtroppo la versione base non permette di utilizzare layer o incorporare / scrivere su un pdf esistente,
    Tutto sommato però carichiamo come con FPDF un'immagine con il documento da compilare.
    Abbiamo acquistato anche short, ho anche fatto una modifica per utilizzare short con FPDF, funziona ugualmente bene.

  18. In effetti mi sto guardando anche DynaPDF che non è assolutamente male, per ora visti i tempi stretti mi è bastato utilizzare fpdf.

    Intanto ne approfitto per chiedere a Massimiliano come ha gestito l'inserimento dell'immagine... in locale ok ho messo il percorso... (pdf.Image("C:\Users\Henry\Desktop\Esempi Xojo Henry\Web\icone\logo.jpg",10,10,35,10))ma se lo pubblico? metto il percorso web? (scusa se è una domanda un po sciocca).

    Grazie a Massimiliano per i PREZIOSI suggerimento !!!

    Ringrazio sempre il buon Antonio che è sempre disponibile ad aiutare tutti!

  19. Massimiliano C

    is not verified 9 May 2017 Europe (Italy, Bergamo)

    allora fpdf è un pò rognoso ...
    devi passare alla funzione un percorso assoluto

    il codice che riporto è quello che utilizzo per stampare le fatture e lo ho messo nell'header della classe report.

    if self.nomeimmagine.Trim <> "" then 
      dim paths as FolderItem
      dim nomefilef as FolderItem
      dim cartella as string
      #if TargetWin32
        paths = getfolderitem("")
      #elseif TargetMacOS
        paths = getfolderitem("")
      #elseif TargetLinux
        paths = getfolderitem("")
      #endif
      cartella = paths.ShellPath
      dim nomefile as string
      nomefile = cartella
      #if targetwin32
        nomefile = nomefile +  "\" + self.nomeimmagine
      #elseif TargetLinux
        nomefile = nomefile +  "/" + self.nomeimmagine
      #elseif TargetMacOS
        nomefile = nomefile +  "/" + self.nomeimmagine
      #endif
      
      nomefilef = New FolderItem(nomefile,FolderItem.PathTypeShell)
      
      // 25/03/2016 Aggiunto orientamento di pagina ... 
      // il parametro viene preso in sola lettura dalla definizione del pdf nel metodo di stampa
      if self.DefOrientation = "P" then
        if nomefilef.exists = true then
          self.Image(nomefile, 0, 0, 210, 297,"jpg")
        end if
      else
        if nomefilef.exists = true then
          self.Image(nomefile, 0, 0, 297, 210,"jpg")
        end if
      end if
      
    end if
    
    self.SetXY(0,0)
    self.SetRightMargin(-0.50)
    self.SetAutoPageBreak(true,1)
    self.Ln(3.5)

    Qui in pratica carico l'immagine e la imposto con la dimensione di tutta la pagina.
    L'immagine deve essere presente nella cartella dell'APP

    Spero ti funzioni al primo colpo ...

  20. Ciao Massimiliano,
    in realtà continuo ad avere un errore quando vado a stampare, mi spiego meglio in realtà sono riuscito a isolare la parte che va in errore che è nel metodo output, l'errore è solo quando pubblico sul server il programma MAI in debug, in debug funziona sempre.

    L'errore è questo :

    Unhandled NilObjectException
    Message:

    Stack:

    fpdf.Output%%o<fpdf>ss
    Frm_Controlli_Contabili.Frm_Controlli_Contabili.Stampa_Ctr_Cont%%o<Frm_Controlli_Contabili.Frm_Controlli_Contabili>
    Frm_Controlli_Contabili.Frm_Controlli_Contabili.Button3_Action%%o<Frm_Controlli_Contabili.Frm_Controlli_Contabili>o<WebButton>
    Delegate.IM_Invoke%%o<WebButton>
    AddHandler.Stub.29%%
    WebButton._ExecuteEvent%b%o<WebButton>sA1v
    WebControl.!_ExecuteEvent%b%ssA1v
    WebSession._HandleEvent%%o<WebSession>so<_HTTPServer.HTTPRequestContext>
    WebSession._HandleRequest%i4%o<WebSession>so<_HTTPServer.HTTPRequestContext>
    WebApplication._HandleHTTPRequest%%o<WebApplication>o<_HTTPServer.HTTPRequestContext>
    _CGIGateway.GatewayRequestThread.Event_Run%%o<_CGIGateway.GatewayRequestThread>

    Ho messo dei brutali msg box per individuare il punto preciso dove il programma si ferma :

    Dim f As FolderItem
    Dim t as BinaryStream

    //Output PDF to some destination
    //Finish document if necessary

    if(me.state < 3) then me.Close()

    //Normalize parameters
    if(name = "Stampa1.Pdf") then
    name="doc.pdf"
    dest="F"
    end if

    //Normalize parameters
    if(name = "Stampa2.Pdf") then
    name="doc.pdf"
    dest="F"
    end if


    select case dest

    //Save to local file

    case "F","S","P"
    f = GetFolderItem(name,0)
    'f = new FolderItem(name,FolderItem.PathTypeShell)
    f = SpecialFolder.Documents.Child(name)
    MsgBox " INIZIO STAMPA PDF"
    t = f.CreateBinaryFile("pdf")
    MsgBox " CREAZIONE FILE STAMPA PDF"
    t.Write me.buffer
    t.close
    App.MyFile = WebFile.Open(f)
    App.MyFile.ForceDownload = True
    Session.ShowURL(App.MyFile.URL, TRUE)
    case else
    me.Error("Destinazione output non corretta: " + dest)
    'return false

    end select

    Direi che la stringa incriminata è questa : f.CreateBinaryFile("pdf"), infatti l'errore è subito dopo inizio stampa.
    Non capisco perché in locale funzioni senza problemi.

    Ti è mai capitato l'errore?

    Ciao e grazie
    Enrico

  21. Newer ›

or Sign Up to reply!