Autore Topic: Progetto pgDesigner 2/3  (Letto 86681 volte)

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Progetto pgDesigner 2
« Risposta #165 il: 29 Maggio 2011, 14:56:13 »
OK!

Riga 2070 e successive... l'errore era pure nelle successive...  :-\
Codice: [Seleziona]
          IF (NOT oIndex.IsNull("Option")) AND IF (oIndex.GetValue("Option") = "UNIQUE") THEN 
            s &= pgHtml.HighCommand(" CONSTRAINT UNIQUE INDEX", {html})
          ELSE
            s &= pgHtml.HighCommand(" " & IIf(NOT oIndex.IsNull("Option"), oIndex.GetValue("Option"), "") & " INDEX", {html})
          END IF

« Ultima modifica: 29 Maggio 2011, 14:59:56 da md9327 »

Offline sotema

  • Maestro Gambero
  • ****
  • Post: 467
    • Mostra profilo
Re: Progetto pgDesigner 2
« Risposta #166 il: 29 Maggio 2011, 21:55:24 »
Correzioni apportate alla versione locale.

Citazione
l'errore era pure nelle successive...  :-\
...ma se non ce ne fossero io che ci sto a fare? :coder:

Analizzare il codice di pgDesigner per scovare gli errore è un ottimo esercizio!
L'uomo ha inventato la bomba atomica, ma nessun topo al mondo costruirebbe una trappola per topi.
Albert Einstein

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Progetto pgDesigner 2
« Risposta #167 il: 29 Maggio 2011, 22:40:33 »
Solo che dopo dovrò eliminarti...  ;D

Poi magari scopri che non sò programmare... (ed è pure vero...)  ;D

Offline sotema

  • Maestro Gambero
  • ****
  • Post: 467
    • Mostra profilo
Re: Progetto pgDesigner 2
« Risposta #168 il: 30 Maggio 2011, 12:42:30 »
dunque...MySQL ha pubblicato la 5.6, PostgreSQL ha rilasciato la 9.1 beta...
forse posso stare tranquillo per qualche settimana... ;D
L'uomo ha inventato la bomba atomica, ma nessun topo al mondo costruirebbe una trappola per topi.
Albert Einstein

Offline sotema

  • Maestro Gambero
  • ****
  • Post: 467
    • Mostra profilo
Re: Progetto pgDesigner 2
« Risposta #169 il: 30 Maggio 2011, 21:04:52 »
Ho notato un comportamento errato del CheckBox "Null" nella maschera Edit Field del driver MySQL; ogni qualvolta apri la maschera, questo risulta impostato a true, indipendentemente dalla impostazione salvata. Tale comportamento è determinato dal metodo pgPaneleditField._new() che alla riga 108 legge il valore impostato, ma alla riga 112 lo sovrascrive basandosi sul valore del CheckBox "Primary Key".
Di fatto:
- se il campo è una chiave primaria il "Null" sarà sempre FALSE (Corretto)
- se il campo NON è chiave primaria "Null" sarà sempre TRUE (Sbagliato)

inoltre modificherei le righe da 313 del metodo MYSQLEvent_Click() nella forma seguente
Codice: [Seleziona]
    CASE .MYSQLPrimaryKey 'The enable the primarykey check then force enabled of check on null.
      IF (.MYSQLPrimaryKey.Value) THEN
        .MYSQLNull.Value = FALSE
        .MYSQLNull.Enabled = FALSE
        .MYSQLUnique.Value = TRUE
        ELSE
          .MYSQLNull.Enabled = TRUE
          .MYSQLUnique.Value = FALSE
      END IF

cose ne pensi?
L'uomo ha inventato la bomba atomica, ma nessun topo al mondo costruirebbe una trappola per topi.
Albert Einstein

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Progetto pgDesigner 2
« Risposta #170 il: 30 Maggio 2011, 21:21:33 »
Questo perchè il campo "Null" identifica appunto la possibilità di inserire valori NULL. Infatti, a seguito delle tue ultime modifiche, avevo notato un cambio di impostazione su una IIF(), ed è quindi probabile che abbiamo errato nell'interpretazione. Nella form, questo campo dipende dall'impostazione della Primary Key che, se impostata a TRUE, forza il divieto di inserire valori NULL. Io direi di ripristinare la IIF() come era prima.

Inoltre, sulla base di quanto detto, bisogna anche forzare le checkbox a seguire le impostazione della chiave primaria, ovvero:

se la Primary Key è TRUE:
1) togliere il check nel campo NULL
2) forzare il check nel campo UNIQUE

se invece la Primary Key è FALSE:
1) rendere liberi i due checkbox, permettendo l'impostazione a libertà dell'utente.

Dimmi se la logica è corretta...

P.S.: in questo momento ho aggiornato il repository, con le ultime modifiche e con l'aggiunta dei driver per le versione MySQL 5.1 -> 5.6. In questo caso è possibile selezionare il database corretto, e fare aggiornamenti di conseguenza sul db.

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Progetto pgDesigner 2
« Risposta #171 il: 30 Maggio 2011, 21:39:06 »
Dato che a volte mi rispondo da solo, ho già fatto le modifiche che ho descritto, e ho aggiornato il repository.

Fammi sapere se la cosa ora ti suona...

Offline sotema

  • Maestro Gambero
  • ****
  • Post: 467
    • Mostra profilo
Re: Progetto pgDesigner 2
« Risposta #172 il: 31 Maggio 2011, 17:45:18 »
modifiche approvate... ;D

resta in sospeso la gestione dei metodi PRE/POST che ho visto hai lasciato disabilitati.
L'uomo ha inventato la bomba atomica, ma nessun topo al mondo costruirebbe una trappola per topi.
Albert Einstein

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Progetto pgDesigner 2
« Risposta #173 il: 31 Maggio 2011, 19:04:58 »
Per il db, sì...

Stavo però pensando che si potrebbe inserire le due funzioni per ogni comando che invio al db, credo dovrebbe funzionare in egual modo... che ne dici?

Esempio:

1) invio le stringe PRE
2) invio la stringa di creazione del singolo oggetto
3) invio le stringhe POST

Offline sotema

  • Maestro Gambero
  • ****
  • Post: 467
    • Mostra profilo
Re: Progetto pgDesigner 2
« Risposta #174 il: 31 Maggio 2011, 21:33:19 »
in effetti lo avevo pensato, ho verificato sulla documentazione e dovrebbe funzionare.
L'uomo ha inventato la bomba atomica, ma nessun topo al mondo costruirebbe una trappola per topi.
Albert Einstein

Offline sotema

  • Maestro Gambero
  • ****
  • Post: 467
    • Mostra profilo
Re: Progetto pgDesigner 2
« Risposta #175 il: 01 Giugno 2011, 11:02:44 »
In realtà dovrebbe funzionare anche inviando la sola stringa PRE, essendo il comando valido solo per la sessione.

1) invii le stringhe PRE
2) invii la stringa di creazione oggetto
3) chiudi la connessione.
...
1) invii le stringhe PRE
...

Intanto beccati quaest'altro grattacapo:
nel driver MySQL per il campo ENUM bisogna prevedere la possibilità di inserire l'elenco delle enumerazioni, come già per PG, e correggere la sintassi del metodo _sqlTable. Credo abbiamo due strade percorribili:
1. Intercettare il tipo "ENUM" nell'evento MYSQLEvent_Change() ed aprire una griglia pr l'inserimento della enumerazione.
2. Utilizzare il TextBox Default, magari modificando la label al volo, per inserire l'enumerazione. In questo caso si deve controllare che l'utilizzatore non inserisca le parentesi tonde, e posizionare il contenuto della textbox immediatamente dopo il nome di campo.

Codice: [Seleziona]
Create table ...
stgione ENUM("estate","inverno","autonno","primavera")...

approffitando del ponte magari provo a scrivere del codice che valuterai.
L'uomo ha inventato la bomba atomica, ma nessun topo al mondo costruirebbe una trappola per topi.
Albert Einstein

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Progetto pgDesigner 2
« Risposta #176 il: 23 Giugno 2011, 23:32:53 »
Ho aggiornato or ora il repository...

Devo avvertirti che ho stravolto un mucchio di roba...molto codice...  :-[

Nelle varie cose ho corretto qualcosina, ho aggiunto qualche altra, e cambiato molto codice.

Il perchè?

1) diciamo che sono un pò pazzo, e quando le cose non mi piacciono, prendo e stravolgo tutto

2) finora sono stato preso dall'obiettivo, ma avevo tralasciato molte cose e molte caratteristiche di Gambas che ora ho cercato di implementare. Una fra le tante è l'uso intensivo della logica degli eventi, che avevo un pò preso sottogambas  ;D , e non l'avevo approfondita più di tanto. Inoltre ho cercato di implementare logiche Java-like, almeno per quanto riguarda il controllo più approfondito degli oggetti. Al momento ho buttato giù una sorta di scheletro, che mi servirà per ottimizzare il codice in futuro.

3) ho cercato di pulire il codice da cose non proprio ottimali o non necessarie, che avevo continuato ad aggiungere nonostante l'esperienza fatta con la precedente versione.

Insomma, dopo tutto lo stravolgimento, il programma funziona ancora (forse meglio), ma è ancora lungi da considerarlo finito. Di idee ne ho parecchie, ma dovrò darmi alla fine un punto di stop.

Nel frattempo ho docuto mettere qualche toppa al vecchio 1.x, a seguito di qualche segnalazione. Ho comunque ricevuto anche segnalazioni per questa versione Beta, il che vuol dire che già la usano...

Offline sotema

  • Maestro Gambero
  • ****
  • Post: 467
    • Mostra profilo
Re: Progetto pgDesigner 2
« Risposta #177 il: 24 Giugno 2011, 15:19:42 »
Citazione
diciamo che sono un pò pazzo,
io toglierei  un pò!  ;D

Mi sembra di giocare a Monopoli, adesso che ero riuscito, almeno in parte a penetrare la logica di pgdesigner2, mi tiri fuori la carta Imprevisto e mi toccano tre giri di stop.  :o Che dire...Genio e sregolatezza...

Ad una prima occhiata mi pare che tu abbia fatto un grosso lavoro di riassesto. La nuova strada, gli eventi, renderanno più fluido il programma migliorando l'apporto di modifiche in futuro.

Dalla prima prova effettuata mi pare ci sia però un problema con l'evento menu. se apri un menu popup su qualunque ogetto del database e immediatamente dopo fai click (tasto sinistro) all'esterno di esso il menu popup non si chiude, devi eseguire un secondo click per chiuderlo.

Infine una curiosità: perché costruire la MainWindow da codice e non da IDE?
L'uomo ha inventato la bomba atomica, ma nessun topo al mondo costruirebbe una trappola per topi.
Albert Einstein

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Progetto pgDesigner 2
« Risposta #178 il: 24 Giugno 2011, 16:09:07 »
Mi dispiace, ma quando mi piglia la mattana sò peggio di un dio cattivo, piglio e spiano tutto...  ;D
Con pgDesigner l'ho fatto così tante volte che manco ricordo...

Comunque...

1) Il menu popup avevo notato che faceva la stessa cosa pure prima, e devo quindi trovare il perchè del problema

2) lo spostamento degli oggetti grafici, sempre se di una determinata semplicità, per avere un maggio controllo su di essi, ho preferito gestirli a codice. Se hai notato, ho anche spostato tutti i relativi eventi in pgApplication, e eliminato molti metodi ridondanti.

Tra le idee, e per eliminare gli sbagli iniziali, vorrei poter impostare i vari oggetti in modo indipendente. Ci sono alcune cose di Gambas che solo da poco ho compreso bene, e vorrei eliminare tutte le cose che sono stato costretto a fare a causa della mia ignoranza.

Comunque...

Alla fine la logica nel suo complesso non è cambiata... praticamente ho solo cambiato le posizioni e totolto alcune duplicazioni e ridondanze.

Inoltre, e l'avrai notato, ho implementato una logica che permette di controllare più nel particolare le modifiche delle varie proprietà degli oggetti. Questo mi permette anche di gestire al meglio la parte eventi.

Infine...

Mi dispiace di aver causato un pò di trambusto, ma spero che ora il programma si immetta su una strada più ottimale... lo spero...

Offline sotema

  • Maestro Gambero
  • ****
  • Post: 467
    • Mostra profilo
Re: Progetto pgDesigner 2
« Risposta #179 il: 12 Luglio 2011, 18:15:36 »
Ha impiegato un po di tempo...ma ecco la traduzione francese. (mi ha garantito di avere fatto il meglio che poteva).
Ciao e a presto.
L'uomo ha inventato la bomba atomica, ma nessun topo al mondo costruirebbe una trappola per topi.
Albert Einstein