Visualizza post

Questa sezione ti permette di visualizzare tutti i post inviati da questo utente. N.B: puoi vedere solo i post relativi alle aree dove hai l'accesso.


Topics - Picavbg

Pagine: 1 [2] 3 4 ... 14
16
Domande tecniche / installare GTK3 in ambiente KDE
« il: 13 Maggio 2018, 23:01:06 »
Ciao a tutti.
da un paio di settimane circa ho installato sul mio pc come 2° SO. Mageia6 plasma. Dopo l'installazione del SO. ho scoperto che mi piace molto ed ho allora tentato di installare Gambas3. Direi che ci sono riuscito in maniera lineare. A questo punto però non ho potuto andare oltre perchè lanciando un mio programma scritto in ambiente Gnome, con le librerie GTK, non si è assolutamente avviato. Ho scoperto che è successo perchè in ambiente KDE mancano le librerie GTK. Dovrei perciò installarle.
Magari la procedura di installazione è un gioco da ragazzi, ma siccome io non lo sono più da tempo i miei ingranaggi mentali si sono arrugginiti.
Basterebbe penso soltanto un pò d'olio da Forum Gambas e riprenderebbero a funzionare.
 ;)  :ciao: :ciao:

17
Programmazione / da gambas di gnome a gambas di kde
« il: 06 Maggio 2018, 18:27:35 »
Ciao a tutti. Non faccio domande da troppo tempo. Allora devo recuperare  ;D

Come si può fare girare un programma, scritto in gambas + Gnome , dentro un ambiente gambas + KDE?

Naturalmente senza doverlo riscrivere per intero.

 :ciao:

18
Programmazione / radiobutton click non funziona sempre
« il: 27 Aprile 2017, 17:40:51 »
Oggi ho dovuto modificare un programma inserendovi due RadioButton. Nel collaudo del nuovo codice ho notato che la procedura RadioButton_Click viene richiamata, non sempre, al click del mouse sul pulsante relatrivo, ma viene richiamata anche quando passando col cursore del mouse sul pulsantino, provocando un richiamo indesiderato della sua"RadioButton_Click".
Indagando su quanto avveniva per apportare le dovute correzioni ho riscontrato che diversaemente dalla "RadioButton_Click", la procedura "RadioButton_GotFocus" viene richiamata solamente quando il focus viene spostato sul relativo pulsantino del RadioButton aggendo sul mouase o tramite i tasti "freccia".
Dopo tale scoperta ho semplicemente eliminato dal mio programma le procedure "RadioButton_Click", spostando però il codice che vi era contenuto all'interno delle procedure evento "RadioButton_GotFocus" di ciascun RadioButton.
Da quel momento il programma, nel punto critico, funziona meglio di un orologio svizzero.
Ho voluto raccontarvi la mia esperienza perchè ho notato che qualcuno, in passato, ha incontrato difficoltà simili alle mie.
Anch'io dovrò intervenire su un altro programma dove l'utilizzo dei RadioButton mi ha creato enormi dificoltà gestionali, senza essere mai riuscito, prima d'ora, a superarle completamente.

Grazie per avere letto l'argomento fino alla fine.
 :D :ciao:

19
Programmazione / [Risolto] PdfWriter e funzione Multiriga
« il: 24 Giugno 2016, 18:12:05 »
La guida di PdfWriter comincia con la seguente frase: "Con questa potente classe è possibile creare dei report professionali ed esteticamente accattivanti in pochissimo tempo".
Lungi da me l'intenzione di avviare una polemica, ma mi sto imbattendo per la terza volta a gestire un output con PdfWriter e dopo il primo difficoltoso cammino, andato in porto, grazie all'aiuto di amici di questo Forum, il secondo tentativo è fallito miseramente, questo, cioè il 3°, mi sta creando non poche difficoltà.
Dovendo riportare in output.pdf il contenuto di una TextArea, ho pensato di sfruttare la funzione Multiriga che sconosco completamente, ma che, seguendo la guida, pensavo di potere mettere in pratica facilmente.  Macchè, ottengo un file dove le righe risultano, è vero,  tutte stampate, ma sovrapposte.
Nel richiamare la mia procedura "ListAnom", sottoclasse di PdfWriter, passo come parametro dati un un'unica stringa contenente le righe da stampare, distinte ciascuna dalla successiva dalla presenza di una sequenza di escape "\n", mentre all'interno di ciascuna riga sono presenti anche sequenze del tipo "\t".
Codice: [Seleziona]
Public Sub PulsPdf_Click()       '   Il file .pdf prodotto viene poi mostrato sul display
'----------------------------------------------------------------------------
  FaiPdf(Foglio.Text)
  Shell("Exec = libreoffice/home/piero/MovvAnomStmp")
End

Public Sub PulStampa_Click()    '   Il file .pdf prodotto viene poi stampato
Dim hStampa As Process
'---------------------------------ù
  FaiPdf(Foglio.Text)
  hStampa = Shell("lpr -o media=A4 " & User.home & "/MovvAnomStmp")
End

Private Sub FaiPdf($Testo As String)
Dim pdf As ListAnom
  '-------------------------------------------
  With pdf = New ListAnom("L", "mm", "A4")         'formato della pagina:  A4  orizzontale
        .Open()
        .AliasNbPages()
        .Data($Testo)
        .Output(User.Home & "/MovvAnomStmp", False)
  End With
End

La classe ListAnom esegue lo split della stringa ricevuta in un array di n righe, tante quante sono quelle che dovrebbero essere riportate nel  file.pdf:
Codice: [Seleziona]
Inherits PdfWriter

Private iNumPag As Integer

Public Sub Header()     'intestazione di pagina (valida per tutte le pagine)
End

Public Function Data($TstMultiRg As String)    'corpo di una o più pagine
Dim bEsito As Boolean
Dim bBlu As Boolean

Dim i As Integer = (-1)
Dim ill As Integer
Dim iLun As Integer
Dim iTotRg As Integer

Dim $DxSx As String
Dim $StriMia As String

Dim $RgStmp As New String[]
'---------------------------------------------------------
  Me.AddPage()
  Me.SetX(0)
  Me.SetY(10)
  Me.Ln()

  $RgStmp = Split($TstMultiRg, "\n")
  Me.SetFont("Times", "", 10)
  For Each $RgStmp
    Inc i
    Me.MultiRiga(0, 0, $RgStmp[i], False, "L", False)
    Me.MultiRect([0, 0])
    Me.Lnm()
  Next
End

Public Function Footer()
Dim $FinePag As String = "- Pag. "
'------------------------------------------------------------------
  iNumPag += 1
  $FinePag &= Str(iNumPag) & " -"
  Me.SetXY(100, -270)
  Me.SetFont("Times", "", 10)
  Me.SetLineWidth(0)
  Me.Cell(0, 0, $FinePag, False, 0, "L", False)
  Me.Ln()
End

Le righe prodotte, dovrebbero essere tutte senza bordo.

Non mi resta che studiarmi passo dopo passo il comportamento di PdfWriter, nella speranza di portarlo a termine prima che mi ricrescano i capelli.

20
Programmazione / Evento Mouse_Click non sempre scatenato
« il: 31 Ottobre 2015, 17:56:10 »
Se apro questa nuova discussione la colpa è solamente di chi mi ha pungolato per utto il tempo della mia recente quarantena.  ;) ;D
Dovendo riprendere il mio ContabFam per snellirne il codice internamente alla Form13.class, a causa di una condizione di errrore scoperta durante l'uso quotidiano del programma, mi sono imbattuto in un problema simile all'attuale, già vissuto ed affrontato qui.
Ora ho potuto inquadrare il problema con l'occhio dell'esperienza acquisita fino ad oggi e posso quindi affermare che l'evento mouse_click non è sempre scatenato. Vi sono oggetti di Gambas che non lo considerano proprio, mentre gestiscono sempre  altri eventi come dblclick, mouseup, mousdown, Enter.ma vi sono anche oggetti come il "Button" che lo gestiscono, insieme a tutti gli altri eventi legati al mouse.
Durante la pesante modifica del codice, purtroppo non ancora terminata, mi sono imbattuto nella necessità di scatenare un nuovo evento, cliccando su un  oggetto di tipo "Button" fuori sequenza.  Gambas risponde alla richiesta, ma solo dopo avere eseguito anche la procedura LostFocus dell'oggetto corrente. Ebbene può capitare che detta procedura di LostFocus contenga istruzioni che non debbano assolutamente essere eseguite qualora il Focus dovesse essere ceduto ad un oggetto naturalmente non successivo nella famosa Gerarchia di Gambas.
É chiara quale necessità mi si sia presentata?  Si?  Allora posso continuare raccontando che ho dovuto prima capire perché non venisse intercettato nessun evento legato al mouse se non dopo la cessione naturale del Focus da parte dell'oggetto corrente:  Gambas, per scelte costruttive di struttura, ha bisogno di abbandonare l'oggetto corrente solamente dopo avere richiamato ed eseguito la procedura LostFocus e sembrerebbe che non sia possibile farlo uscire dal suo schema gestionale degli oggetti.
La prima cosa da fare era come farmi dire da Gambas che, col Focus attivo nell'oggetto.3, fosse stato eseguito un click del mouse sull'oggetto.7 della stessa Form. Non è stata una scoperta facile, ma dopo varie indagini, ho potuto constatare che passando col mouse su un altro oggetto della Form, viene schedulato l'evento Enter. Ho potuto, finalmente,  dialogare con Gambas e registrare un valore all'interno di una variabile globale della Form, variabile che ho potuto interrogare dentro la procedura LostFocus dell'oggetto attivo corrente e saltare così tutte le istruzioni della LostFocus e passare così il Focus al Buttom cliccato poco prima.
Per completezza di quanto ho detto sopra riporto un minimo di codice impiegato per l'occorrenza:
Codice: [Seleziona]
Public Sub PulsCancDig_Enter()
'----------------------------------------------------
  iSwReset = 1
End

Public Sub PulsCancDig_Click()
'------------------------------------
  If iSwReset = 1 Then
      iSwReset += 1   
  Endif
    iSwReset = 0
    bSwErCoVoce = False
    ResetDigForm
    EUR.SetFocus
End

Public Sub CodVoxMan_LostFocus()
'---------------------------------
--- bla --- bla --- bla ----
    Select Case $SetFocus
            Case "EUR", "VoContCas", "VoSotCtoCas"
            Case Else
              CodVoxManLostFocus_mio()
    End Select
End

Private Sub CodVoxManLostFocus_mio()
--- bla --- bla --- bla ----
 If $SetFocus = Null
      If iSwReset < 2 Then
        $Rispo = InizInsiemConti($TbVoCi[iCmbCorr, 0])
        $NuContIni = $Rispo[0]
        $NuContFin = $Rispo[1]
        If $CoVoCorr < $NuContIni Or $CoVoCorr > $NuContFin Then
            Message.Error("Codice Voce <b> '" & $CoVoCorr & "'  </b> esterno ai limiti consentiti (da:'" & $NuContIni & "' a:'" & $NuContFin & "') <BR> <CENTER> --- CORREGGI --- </CENTER>")
            bSwErCoVoce = True
            $SetFocus = Last.name
        Endif
      Endif
    Endif

Riporto anche la sequenza delle procedure come vengono eseguite da Gambas

Citazione
Entrata in 'CodVoxMan_GotFocus'
Passaggio in 'CodVoxMan_Entry'
Entrata in 'CodVoxMan_KeyPress'
Entrata in 'CodVoxMan_KeyPress'
Entrata in 'CodVoxMan_KeyPress'
Entrata in 'CodVoxMan_KeyPress'
Entrata in 'CodVoxMan_KeyPress'
Entrata in 'CodVoxMan_KeyPress'
Entrata in 'CodVoxMan_KeyPress'
Entrata in 'CodVoxMan_LostFocus'
Entrata in 'CodVoxManLostFocus_mio'
Uscita da 'CodVoxManLostFocus_mio' - CoVoCtoCas // $SetFocus= 'CoVoCtoCas'bSwErCoVoce= T
Entrata in 'CtoCollegNo_GotFocus'
Entrata in 'CodVoxMan_GotFocus'
Passaggio in 'CodVoxMan_Entry'
Entrata in 'PulsCancDig_Enter' - Last.Name= 'PulsCancDig'
Entrata in 'CodVoxMan_LostFocus'
Entrata in 'CodVoxManLostFocus_mio'
Uscita da 'CodVoxManLostFocus_mio' - CoVoCtoCas // $SetFocus= ''bSwErCoVoce= T
Entrata in 'PulsCancDig_Click'
Entrata in 'ResetDigForm'
Entrata in 'SpeCoPreFi_Change'
Passaggio in 'CmbVociCont_Change'
Passaggio in 'CmbVociCont_Change'
Entrata in 'EUR_GotFocus'

Ho evidenziato gli eventi  "PulsCancDig_Enter" e "PulsCancDig_Click" per far capire meglio la sequenza con cui Gambas ha eseguito gli eventi stessi. Si vede infatti che l'evento "PulsCancDig_Enter"  viene eseguito mentre è ancora attivo l'oggetto CodVoxMan, mentre l'evento PulsCancDig_Click vienbe eseguito soltanto dopo il completamento della procedura CodVoxMan_LostFocus, conclusiva dell'oggetto CodVoxMan
Andrebbero commentate tutte le righe appena citate, ma occorrerebbe molto tempo e molto spazio. Ciò non toglie che eventuali curiosità o perplessità potranno sempre essere chiarite.

21
Programmazione / [Risolto] NoTabFocus non funziona ?
« il: 07 Ottobre 2015, 12:27:43 »
Sono di nuovo qui a raccontarvi una stranezza.
Nella form.13 del mio programma ContabFam di cui allego l'immagine, sono dichiarate in testa alla form 2 textBox con MaxLength= 1. Fra gli altri oggetti sono dichiarate anche 6 ComboBox legate al Group "CmbVociCont" e 2 checkBox legate al Group "SetCoVoce".
Lo spostamento del Focus da un oggetto all'altro della Form con NoTabFocus=False ha sempre funzionato. Questa mattina durante le prove attinenti a modifiche semplificative del precedente codice, dopo avere impegnato la prima TextBox della Form, il Focus ha saltato la seconda ed è passato al gruppo
"SetCoVoce" e, successivamente,  ha continuato il suo spostamento fermandosi alla prima ComboBox del gruppo "CmbVociCont" corrispondente all'etichetta "Voce contabile Secondaria" impedendomi di fatti la digitazione propedeutica del sottotipo di uscita (Spesa/Fittizia/Costo/Prestito    (S/F/C/P))

Durante le tante prove eseguite per scoprire l'errore nel mio programma, ho scoperto che eliminando le dichiarazioni Group il NoTabFocus funziona benissimo. Ho allora modificando ulteriormente la Form attribuendo alle due TextBox poste in alto l'appartenenza ad un nuovo Group che ho chiamato "Groppone"  ;)
Ebbene ora il NoTabFocus ha ripreso a funzionare.

Per tutte le prove fatte, dubito che ci sia un errore nel mio programma, penso ad un Errore del linguaggio.
Meditate gente, ... meditate.

22
Programmazione / [Risolto] come spostare il focus
« il: 01 Ottobre 2015, 23:52:51 »
Con Gambas ho imparato a non fidarmi dell'istruzione SetFocus che in VB funzionava perfettamente.
A causa di errori operativi riscontrati all'interno di una FormXX.class, mi sono deciso a rivedere il codice scritto a suo tempo e modificarlo radicalmente, nella speranza di ottenere un funzionamento sempre corretto.
La Form in questione gestisce alcune ComboBox che sono viste come Groups. Ciò determina l'impossibilità di sapere quale delle diverse ComboBox abbia il Focus. In determinate condizioni raggiunte durante la digitazione, la sequenza naturale  delle istruzioni dovrebbe interrompersi per riprendere dal GotFocus della ComboBox appena lascita. Infatti la necessità di tornare alla ComboBox precedente può essere intercettata solamente all'interno dell'evento LostFocus della stessa, cioè soltanto dopo che la ComboBox precedente non è più attiva.. Non potendo a tal punto utilizzare in maniera semplice il SetFocus, l'unica strada percorribile diventerebbe, a mio avviso, quella di simulare la pressione della combinazione di tasti [shift+ backtab]. Ho dato una rapida lettura qui, ma non ho capito come ottenere il CHR corrispondente alla Key.BackTab. Ho tentato allora di provare la seguente istruzione:
Codice: [Seleziona]
 Desktop.SendKeys(Key.BackTab)
L'istruzione è stata eseguita apparentemente bene, però il Focus non è tornato alla ComboBox precdente, contrariamente  a quanto sperato. Infatti si è spostato comunque alla ComboBox immediatamente successiva.
Sono, pertanto. ahimè, costretto a vestire i panni del principiante per ottenere eventuali suggerimenti in merito al mio imprevedibile problema.
 :(

23
Come ho raccontato qui, La perdita dei dati mi ha fatto soffrire abbastanza ma, dopo avere recuperato tutto, grazie a Dio,  sto cercando di organizzare una procedura di salvataggio dati. Ora il mio pc contiene 3 HD Sata, dove uno dei tre, purtroppo quello dove si è manifestata la perdita dei dati, contiene 3 partizioni per il salvataggio giornaliero, a fine giornata di tutti i miei dati.:
- la partiz. sdc2, contiene i dati aggiornati fino a 3 giorni fa;
- la partiz. sdc3, contiene i dati aggiornati fino a 2 giorni fa;
- la partiz. sdc4, contiene i dati aggiornati fino a ieri.

Ciò nonostante, visto che il disco destinatario dei salvataggi giornalieri è quello critico, per la perita di dati che vi si è manifestata, settimanalmente ho cominciato a copiare le suddette partizioni in altrettante di un disco esterno che collego al pc alla fine di ciascuna settimana.
Tutto quanto detto sembra semplice da attuare, ma in effetti non lo è.

Per svolgere l'attività di salvataggio giornaliero ho costruito uno scrpt.sv, ancora in prova, che riconosce il file di backup più antico, grazie alla data contenuta nel nome del file e che procede a sostituire quel file con quello aggiornato alla data corrente nominandolo come "dativari_aaaammgg" (Es.dativari_20150727).
La copia settimanale delle partizioni sdc2, sdc3, sdc4 in altrettante del disco esterno è più difficile da gestire con uno script, perchè il nome della nuova unità e delle sue partizioni dipende dalla porta USB di connessione; infatti, connettendo l'unità ad una porta USB diversa dalla connessione precedente, le partizioni di destinazione del nuovo backup, possono assumere nomi diversi (sdg1, sdg2, sdg3 invece che sdh1, sdh2, sdh3).
Tale difficoltà mi fa pensare a svolgere la copia settimanale delle tre partizioni di backup non attraverso uno script, ma attraverso un programma in Gambas, facendogli richiamare di volta in volta le funzioni shell occorrenti.

Spero di avere illustrato abbastanza chiaramente il mio progetto e spero di ricevere le vostre gradite opinioni.
 :D

24
Linux / [Risolto] Aiuto! Sono alquanto inguaiato.
« il: 26 Giugno 2015, 23:24:15 »
Stasera non riesco più a vedere la partizione sdb1 con tutti i miei dati da nessuno dei SO installati.
Tutti mi forniscono la seguente informazione:
Codice: [Seleziona]
ls /mnt
devsda1/  devsda2/  devsdb1/  install/  vedi_blkid
[root@localhost ~]# mount /dev/sdb1 /mnt/devsdb1
[root@localhost ~]# ls -l /mnt/devsdb1
totale 0

Come se sdb1 fosse vuota, però GParted dice che impegnata per 995,23 MB.

Come faccio a ripescare tutti i miei dati aggiornati ad oggi?

25
Programmazione / [Risolto] come gestire desktop di SO. diversi
« il: 23 Giugno 2015, 10:47:34 »
Fare girare lo stesso programma su SO. diversi, pur appartenenti allo stesso Universo Linux dovrebbe essere un vantaggio anche pubblicitario per un programma. Invece, per me, si sta dimostrando un vero e proprio dubbio amletico.
Dopo avere casualmente potuto allineare le versioni di Gambas su Ubuntu e su fedora alla 3.7.1, quando avvio il mio ContabFam, mi ritrovo la prima schermata dimensionata diversamente con ovvi fastidi estetici.  Per farmi capire meglio ho allegato le due schermate. Mi ha preso la curiosità di guardare le dimensioni del desktop di Gambas nei due ambienti ed ecco i risultati:
Citazione
Gambas-3.7.1(Ubuntu):
- Desktop.Width = '1301'
- Desktop.Height = '744'

Gambas-3.7.1(fedora):
- Desktop.Width = '1366'
- Desktop.Height = '7441

Premesso che il pc su cui ho avviato Ubuntu  e fedora è sempre lo stesso, con lo stesso monitor, non capisco da che cosa possa dipendere tale differenza e non ho una precisa idea di come intervenire da programma per riallineare le non poche schermate nel mio programma.
Come risolvere tale problematica?   :rolleyes:

L'unica soluzione che vedo in questo momento è quella di definire io una sorta di desktop tipo a cui ridimensionare tuitte le Form del programma, nella procedura_new di ciacuna FormX.class, come nel seguente esempio:
Codice: gambas [Seleziona]
Public Sub _new()
Dim DeskWidthFrm as integer  = 1300
Dim DeskHeightFrm as integer = 740

  Me.Width = DeskWidthFrm - 100
  Me.Height = DeskHeightFrm - 50
  --- bla --- bla ---
 Panel1.width =  Me.Width - 700
 Panel1.Height =  Me.Width - 600
  --- bla --- bla ---
End


A meno che non vi possano altre migliori e più semplici soluzioni.
 :ciao:

26
Programmazione / [Risolto] Form.Text sparita
« il: 10 Maggio 2015, 15:13:10 »
Dal titolo si dovrebbe capire che, non so da quando, ma mi ritrovo una Form, senza la barra del titolo, quella attinente alla proprietà Text

Me ne sono accorto casualmente in questi giorni, perchè non riesco a capire, durante l'esecuzione, quale ramo del programma stia curando. Infatti la Form di cui parlo è una Form particolare che contiene diversi oggetti, attivati o resi visibili, a seconda del ramo logico-applicativo del programma. La barra del titolo della Form non compare e non ho idea se e come ripristinarla. Oggi ho rivisto i settaggi di tutte le proprietà della Form, ma nessuno di essi mi sembra responsabile della mancata visibilità.

Sicuramente è una banalità, ma non riesco a venirne a capo, salvo a    :o    ridisegnare tutta la Form    :o


27
Sportello assistenza / [Risolto] gambasdoc non disponibile
« il: 21 Aprile 2015, 15:39:22 »
Da ieri tento di accedere alla documentazione ufficiale di Gambas, premendo il tasto F1 dentro l'Ide di Gamas. Dopo una lunga attesa per la richiesta di connessione la nuova finestra resta completamente vuota.
Ho provato, allora, ad accedere alla documentazione con gmail. Questa volta ho trovato la seguente segnalazione:
Citazione
Impossibile collegarsi a www.gambasdoc.org.

Qualcuno ne conosce la causa?
 :ciao:

28
Segnalazione bug / Estrazione di dati dalla tabstrip corrente
« il: 09 Aprile 2015, 17:34:06 »
Oggi mi sono scontrato con una possibile anomalia di Gambas, relativamente al puntamento dei campi interni ad una delle linguette di una TabStrip.
Il problema sorge quando cerco di estrarre il contenuto degli oggetti interni alla linguetta, come TextLabel, TextArea. Infatti alla fine del caricamento di una TabStrip, punto alla prima linguetta della TabStrip che diventa perciò visibile.
La mia TabStrip si chiama Schedario e L'istruzione è:
Codice: [Seleziona]
Schedario.Index = 0

Ora molto semplicemente devo estrarre il contenuto di tutte le TextLabel e TextArea contenute in essa:
Codice: [Seleziona]
iIdReColleg = Int(Val(NumIdPartMovv.Text))     
--- bla --- bla --- bla ---
iNuProMovg = Int(Val(NuProMovimGG.Text)) 
$CauDescr = CausDescr.Text
dove gli oggetti.Text sono ripetuti in tutte le linguette della TabStrip Schedario.

Ebbene, tutti i campi destinatari vengono impegnati esclusivamente dai valori contenuti nell'ultima linguetta della TabStrip.
 :ciao:

29
Oggi, durante l'esecuzione di un programma di test sul DB costruito dal mo programma "ContabFam" ho incontrato un'anomalia che definirei inverosimile, e cioè:
vado a leggere il contenuto di certi dati riepilogativi presenti in campi di colonne contigue della tabella di DB riepmovg
Ebbene pur avendoli richiamati correttamente, l'output fornito dalla query sql è uguale per tutti e due i campi, proprio come se contenessero entrambi lo stesso valore.
Riporto la print eseguita durante il debug del programma, per tutte le colonne di una riga della tabella incriminata:
Citazione
RecRiepMovg!IdRiepMovg= '6159'  
RecRiepMovg!DtCoMovg= '20130102'
RecRiepMovg!StaDtMovg='C'
RecRiepMovg!TotEntrg= '3110'    RecRiepMovg!TotUscg= '3110'
RecRiepMovg!RipFing= '360,52'

Come risulta chiaramente la  4^ riga di print richiama le colonne TotEntrg e TotUscg: RecRiepMovg!TotEntrg= '3110'    RecRiepMovg!TotUscg= '3110'

L'istruzione di query che precede la suddetta print é:
Codice: gambas [Seleziona]
 RecRiepMovg = ApriDB.DB_Connection.Exec("SELECT * FROM  riepmovg WHERE  DtCoMovg = '" & iGiornata & "'")
    If Not RecRiepMovg.Available
      EdtData = New EditData(iGiornata)
      Message.Error("<CENTER> ATTENZIONE !!!<BR><b> Il RECORD RIEPILOGATIVO della giornata contabile '" & EdtData.$DataEdt & "' inesistente in DB.ContabFam.riepmovg <BR><BR>IL PROGRAMMA VERRÀ CHIUSO </b></CENTER>")
      Quit
    Endif
    Print "RecRiepMovg!IdRiepMovg= '"; RecRiepMovg!IdRiepMovg; "'", "RecRiepMovg!DtCoMovg= '"; RecRiepMovg!DtCoMovg; "'", "RecRiepMovg!StaDtMovg='"; RecRiepMovg!StaDtMovg; "'", "RecRiepMovg!TotEntrg= '"; RecRiepMovg!TotEntrg; "'", "RecRiepMovg!TotUscg= '"; RecRiepMovg!TotUscg; "'", "RecRiepMovg!RipFing= '"; RecRiepMovg!RipFing; "'"
    If RecRiepMovg!TotEntrg = fTotEntr And RecRiepMovg!TotUscg = fTotUsc And RecRiepMovg!StaDtMovg = "C" Then
        iEsito = 0
    Else
      iEsito = 1
    Endif

La  vista della tabella fornita da Sqlite ed allegata qui mostra chiaramente che i nomi delle colonne sono riportati correttamente e che il contenuto delle celle nella riga di cui ho detto sopra è diverso:  
3110 per TotEntrg
3012.9 per TotUscg

Inoltre la tabella presenta altre celle delle stesse colonne con valori uguali, diversamente dalla realtà. Mi viene difficile da crederlo, ma sembra che ci possa essere qualche cattivo comportamento di software che legge e/o registra i dati in codesta tabella. Ma perché solo in essa?
Ho guardato le istruzioni di creazione della tabella ed a me sembrano corrette:
Codice: gambas [Seleziona]

Public Sub CreaRiepMovg($_NomeTab As String)        'Routine di crea'PRIVATE DB_path AS String 'Percorso di ricerca del Database ContabFam.db
'----------------------------------------------------------- CREAZIONE DELLA "Tabella di RIEPILOGO DEI MOVIMENTI GIORNALIERI" -------                      
  ApriDB = New OpenDB
  sql = "CREATE TABLE '" & $_NomeTab & "'"                  '*** Contiene i Conti e sottoconti di dettaglio utilizzabili nella procedura ***"
  sql = sql & "('IdRiepMovg' INTEGER PRIMARY KEY AUTOINCREMENT," 'codice id obbligato dalla struttura di SQLite3, ma inutile per questo DB
  sql = sql & " 'DtCoMovg' INTEGER,"  '----»» costituisce la chiave primaria d'ordinamento effettiva  e rappresenta la Data contabile della giornata di riferimento
  sql = sql & " 'StaDtMovg' CHAR(1) DEFAULT NULL,"        ' "A" = Giornata aperta, "C" = Giornata chiusa
  sql = sql & " 'TotEntrg' INTEGER,"                      'Totale Entrate di giornata
  sql = sql & " 'TotUscg' INTEGER,"                       'Totale Uscite di giornata
  sql = sql & " 'RipFing' FLOAT"                       'Saldo di fine giornata, a riportare
  sql = sql & " );"
  Try ApriDB.DBConnection.Exec(sql)
  If ApriDB.DBConnection.Error Then
      Message.ERROR("Attenzione! ->  Creazione Tabella 'ContabFamdb.RiepMovg' --> FALLITA" & Chr(10) & Chr(10) & "Cod.Erro= " & Error.Code & "»»" & ERROR.Text & Chr(10) & Chr(10) & "Il programma verrà chiuso")
      Quit
  Else
    ApriDB.DBConnection.Close               'chiude il DB
  Endif
End


 :rolleyes:

30
Programmazione / Unknown symbol Sort in class variant[]
« il: 26 Febbraio 2015, 17:13:25 »
Quello riportato nel titolo è il messaggio che mi è comparso oggi dopo avere faticato un sacco per mettere in ordine crescente di data le righe di un array bidimensionale definito variant.
Per potere eseguire l'ordinamento ho dovuto trasformare l'array da bidimensionale ad unidimensionale, poi comandare il sort del nuovo array ed, infine, riportarlo nella struttura bidimensionale originaria.
Non sto a riportare qui tutto il codice perché quello che conta è lo schiaffo che Gambas3.4.1 mi ha mollato.
Riporto le istruzioni di dichiarazione dell'array e di impiego del metodo sort:
Codice: gambas [Seleziona]
Dim vArea As Variant[]
...
  vArea.Sort


L'anomalia nasce dal fatto che per gli array di tipo variant non è previsto il metodo Sort che invece è gestibili in tutti gli altri tipi di array.
La differenza pratica che riesco a riscontrare è costituita dal fatto che mentre gli array di tipo String, integer, date, single sono tutti composti da elementi di dati di tipo omogeneo, l'array di tipo Variant è composto invece da elementi di dati di tipo eterogeneo. Evidentemente Gambas non riesce a gestirli.

Ciò significa, salvo diverso riscontro, che dovrò gestirmi il Sort a manina.  :evil:
Ciao.
 

Pagine: 1 [2] 3 4 ... 14