Ti segnalo anche un altro errore: quando tento di aprire un progetto, prima mi esce il dialog "project loaded", ma poi mi appare un errore e pgd si chiude. Uso Gambas 2.8. Ti allego la schermata dell'errore e il file xml del progetto, dimmi se ti serve altro.
I complimenti sono più che meritati anche perchè, anche se magari per te MySQL è ancora secondario, gli utenti troveranno in pgd uno strumento unico. L'unico programma simile per MySQL è MySQL Workbench, ma gira solo su Win... e comunque, le GUI di MySQL per Linux sono instabili e inaffidabili. Io ti consiglio di puntare molto su MySQL.
Io conosco poco pg e ancor meno sqlite, ma se posso aiutarti con le mie consocenze di mysql lo farò volentieri. Dimmi pure come inserire i tipi geometrici e le relative descrizioni. Se vuoi ti posso aiutare a pensare a come riempire altre cose, tipo i set di caratteri... è tutto nell'information_schema.

Registrato
Un'altra cosa: MySQL non tiene conto delle clausole CHECK. Permette di inserirle per una finta compatibilità con gli altri dbms, ma è una cosa ingannevole, dato che non le rispetta.
Registrato
« Risposta #18 il: 15 Ottobre 2008, 18:52:24 »
Non ritengo MySQL un dbms secondario, anche perchè di passi in avanti ne ha fatti parecchi, ed è per la sua velocità che viene impiegato, ad esempio, nei CMS. Il motore è abbastanza semplice ma ci sono grosse differenze rispetto ad un PostgreSQL o un Oracle (con cui lavoro costantemente...).
Dato che questi due li uso in ambito lavorativo, ne conosco abbastanza i segreti (Oracle di più...), e ritengo che siano adatti più in sistemi ad alto livello, cosa che MySQL forse raggiungerà con il tempo.
Ma a parte le disquisizioni...
L'errore in fase di lettura l'ha già segnalato darth, e comunque l'ho già corretto.
Riguardo alla versione Gambas, io uso attualmente la 2.8.2 (ultima stabile), e per cui sarebbe meglio tu usassi questa, altrimenti potremmo avere delle casistiche di errore anomale, dato che alcune cose sono cambiate.
Riguardo ai nuovi tipi MySQL, nel codice sorgente del driver (file pgDriverMySQL50.class, unica versione per adesso...), all'inizio dello stesso, nel metodo "InitDataType()" sono dichiarti tutti i tipi previsti per quella versione del driver. Sono presenti un certo numero di chiamate, con relative creazioni di oggetti pgTypeItem, che definiscono ogni singolo tipo, compresa una propria descrizione. Nella classe "pgTypeItem.class", metodo costruttore "_new()", vengono definiti i parametri di costruzione, che in pratica sono:
' @parameter : String : Name (default="")
' @parameter : String : Type (default="")
' @parameter : String : Parameter (default="")
' @parameter : String : Storage (default="")
' @parameter : String : Min value (default="")
' @parameter : String : Max value (default="")
' @parameter : String : Resolution (default="")
' @parameter : String : Description (default="")
Sono tutti parametri descrittivi, sui quali non viene effettuata alcuna operazione, ma per esempio: il campo nome viene caricato nella combo di edit dei campi tabella, la descrizione viene usata come tooltip (se presente).
Se vuoi, puoi implementare questa parte di codice con i nuovi tipi, visto che li conosci bene, altrimenti sono costretto comunque a leggermi la documentazione relativa. Poi mi passi le variazioni, le controllo un attimo, e le inserisco nella prossima release.
Riguardo alla lettura del db, infatti mi baso sulla tabella "information_schema", come puoi vedere nel codice del driver, ma ho notato che alcune cose non ci sono, o per lo meno forse non sono in quella tabella, oppure devono essere calcolate in qualche modo, non sò bene ora...
Ora provo pure il file di progetto che mi hai inviato, ti faccio sapere se c'è qualcosa che non và.
Per finire: ad ogni modo, dall'ultimo rilascio, ho fatto proprio alcune modifiche al driver MySQL. Ora vedo di fare il pacchetto e di pubblicarlo appena possibile.
Se hai domande da fare, circa la logica del programma, o su cose inerenti al codice, non esitare; inoltre, se hai qualche idea sui campi da mostrare nelle form di edit, idem con patate!
Ciao e grazie!
Registrato
« Risposta #19 il: 15 Ottobre 2008, 19:20:15 »
Nuova release alpha!
Modifiche: eseguite alcune correzioni nelle form di edit degli oggetti, e nel driver per MySQL. Inoltre è stato corretto il problema segnalato da darth, relativo alla funzione di gestione dello storico progetti.
Erroneamente, nei precedenti file, la directory del progetto era stata nominata come il file *.tar.gz. Da ora in avanti, la directory assumerà il corretto nome: pgDesigner2
Nota: nella home utente viene creata la directory nascosta ".pgdesigner2", che contiene il file di configurazione del programma e il file di log. Quest'ultimo viene soprattutto utile in caso di errore, perchè riporta gli errori rilevati nel programma, in particolare quelli che provocano il crash. In questo caso può essere utile inviarmi questo file, in modo che possa identificare eventuali anomalie; finora mi è sono state inviate immagini del messaggio di errore, ma ritengo che è il caso di evitarle, perchè appesantiscono inutilmente il forum. Restano valide comunque quelle necessarie ad indicare aspetti e condizioni particolari o anomalie, come chiara descrizione di questi eventi.
Grazie a tutti!

Registrato
g.paolo
@md9327Il fatto che il file non è visibile non dipende da pgDesigner, dato che usa l'oggetto Dialog.OpenFile() per la selezione del file di database. Non credo neanche sia un problema di Dialog, perchè non ho mai riscontrato problemi simili. L'unica cosa mi viene in mente, è che forse hai qualche impostazione dell'ambiente Gnome che limita la visualizzazione; ma la cosa è molto strana, perchè a quanto mi risulta l'unica impostazione è la possibilità di nascondere solo i file che iniziano con il punto (file nascosti), a meno che il file non abbia qualche impostazione chmod che comunque obbliga ad un comportamento anomalo.
Impostazioni d
'ambiente dici? Non ho settato nulla al di fuori delle impostazioni di default, e per quanto concerne i permessi, il file incriminato è settato su 777.Confermo che anche in Ubuntu 8.04 il punto serve a nascondere files e cartelle, e la versione di gambas2 che uso è la 2.8.2-1ubuntu.Confermo comunque che il problema sta proprio nella mancanza di estensione, perchè se provo a rinominarlo come "3M_immobiliare.sq3" viene visto ed aperto.Dopo aver importato nel nuovo progetto due tabelle dal file sqlite3, ho provato a spostare le singole finestre flottanti contenenti la descrizione dei singoli campi, dalla posizione di aggancio alla sinistra della finesrta programma. Se provo a spostare una tabella con pochi campi, la medesima si sposta agevolmente senza problemi, ma se ci provo con quella che contiene circa 50 campi ottengo il seguente errore:unkown symbol 'MouseY
' in class 'pgPanelProjectGraphic
'code: 11class: pgActionManagerwhere: pgActionManager.AreaMouseMove.1747trace: pgActionManager.AreaMouseMove.1747trace: pgEventManager.Event_MouseMove.264Se ti può aiutare....!
Registrato
g.paolo
« Risposta #21 il: 15 Ottobre 2008, 21:54:00 »
Ooops, mi correggo!
Ho scoperto che anche con le finestre con pochi campi accade l'errore suddetto, con la differenza che l'errore riporta "mouseX" anzichè "mouseY" quando la finestra dei campi tabella si avvicina ai pannelli di destra.
Registrato
« Risposta #22 il: 15 Ottobre 2008, 23:49:39 »
Proverò a vedere se c'è qualcosa che impedisce di vedere i file senza estensione... ti farò sapere...
Riguardo all'errore lo controllo, ma penso sia causato quando l'immagine supera i limiti del diagramma.
Tanto per sapere, hai per caso modificato le dimensioni di base del diagramma di progetto (menu Strumenti/Opzioni) ?
Ultima cosa, le anomalie le hai riscontrate in quest'ultimissima versione ?
Comunque, controllo il tutto e vediamo di correggere...
Bye
Registrato
« Risposta #23 il: 15 Ottobre 2008, 23:59:24 »
Ops, hai ragione tu su Dialog !A quanto pare, se si imposta un filtro, come ad esempio:
Dialog.Filter = ["*.*", ("All files")]
la visualizzazione si limita a far vedere tutti i file, ma che abbiano comunque un'estensione (il punto + *).
Se gli metto un solo asterisco (es.
"*"), fà vedere solo i file senza estensione, e così via...
Non mi ero accorto di questa anomalia, perchè
in ogni caso prevedevo un estensione ai file che leggevo e creavo, ma a questo punto il discorso cambia...
Ho provato a togliere il filtro, e
in effetti ora funziona, ma la cosa è alquanto strana, e molto diversa dal comportamento di tutti gli altri linguaggi.
Ad ogni modo, se digiti direttamente il nome del file, lo prende ugualmente, solo che non lo vedi
in lista, ma certo che la cosa non è molto simpatica.
Comuque ho già fatto la modifica...
Sull
'errore "Mouse" mi ero sbagliato, in quando è vero che si verificava all'avvicinarsi dell
'oggetto al margine del diagramma, ma era causato da un'errore da me introdotto
in alcune ultime modifiche del codice.
Anche questo è stato corretto, ed è presente
in questa release.
Bel lavoro!
P.S.: vedi che l
'aiuto serve?
Registrato
« Risposta #24 il: 16 Ottobre 2008, 04:25:18 »
Un paio di domande:
- Cosa devo mettere come Type? Va bene "G"? Considera che non è un testo, perchè per inserire ad esempio un punto la sintassi è questa:
INSERT INTO t ( p ) VALUES ( POINT(1 1) )
- Devo mettere i nuovi tipi in ordine alfabetico mischiati con gli altri, oppure li metto tutti alla fine per raggrupparli? Sono 8.
- Con Parameter ti riferisci ai parametri utilizzati per creare il campo, cioè in pratica le dimensioni?
A parte le descrizioni ho lasciato tutti gli altri campi in bianco. La documentazione non fa cenno alla memoria occupata. In effetti, a parte POINT, sono tutte collezioni di oggetti e quindi immagino non sia calcolabile. Gli altri campi (massimo, minimo, risoluzione) non sono applicabili.
----
Stavo ripensando al problema dei campi ENUM/SET. Credo che un modo pulito per risolvere la questione sia il seguente:
- Nell'evento MYSQLLength_Change fare un parsing del campo Param dell'ogetto pgTypeItem selezionato
- se contiene [(l)] il form si deve comportare come fa ora
- se non contiene nulla, MYSQLLength deve essere disabilitato
- se contiene qualcosa di simile a ciò che contiene ora ENUM: TextLabel10.Text = "Values". In questo caso, l'evento Event_KeyPress deve evitare di fare il controllo sui tasti premuti.
Tra l'altro, un parsing simile si potrebbe fare per il contenuto deel campo pgTypeItem.Type: in base al suo contenuto, alcuni checkbox possono essere disabilitati. Ad esempio, Signed non ha significato per un campo di testo.
Cosa ne dici? Se vuoi io mi offro di provare a fare quest'ultima cosa. So che è meno utile, ma è molto semplice e quindi è un modo indolore per familiarizzare con il tuo codice, se poi non ho problemi e il mio lavoro ti soddisfa, posso provare a fare anche la prima (nel modo che ho descritto o nel modo che mi dirai tu).
In genere non ho tempo da dedicare agli hobby, ma per qualche giorno posso darti una mano, se ti serve.

Registrato
g.paolo
@md9327
Confermo che l'errore si presentava sulla versione 643 e che non ho modificato la grandezza della finestra. Vedo comunque che hai trovato l'inghippo!
Ora provo la 644

Registrato
g.paolo
Due piccole domande:
1) non ho trovato la funzione di "browse" della singola table, non esiste o sono io imbranato?
2) non ho ancora provato il metodo per impostare le relazioni tra i campi, ma immagino che dopo aver importato le table si debbano stabilire i vari indici primari e secondari, ed allora è possibile collegare tra loro gli omonimi indici di riferimento. E' corretto?
Registrato
« Risposta #27 il: 16 Ottobre 2008, 12:50:41 »
1) non capisco cosa intendi per "browse", in pgDesigner non è implementata alcuna funzione per visualizzare i dati del database, perchè non è il suo scopo;
2) se parli di sqlite, l'implementazione delle relazioni non è attiva, perchè non trovato nessuno modo per gestirla su questo db, anzi, non mi sembra proprio che le utilizzi. Se vogliamo implementarla nel progetto, possiamo farlo a livello puramente grafico, anche se non lo ritenevo utile, solo che poi non viene utilizzato in output, durante la creazione del db.
Ad ogni modo, per attivare una relazione ha bisogno di: almeno due tabelle, almeno un campo come chiave primaria sulla tabella padre, e poi anche un mouse, una tastiera...ecc. :-) Ovviamente scherzo, ma i primi due elementi sono quelli veri ed essenziali.
Ha, la prima tabella selezionata è quella padre; inoltre, se non è presente già un campo con nome e tipologia uguale al campo chiave della tabella padre, nella tabella di destinazione vengono creati in automatico, e comunque modificabili successivamente...

Registrato
For
santecaserio:
- Cosa devo mettere come Type? Va bene "G"? Considera che non è un testo, perchè per inserire ad esempio un punto la sintassi è questa:
INSERT INTO t ( p ) VALUES ( POINT(1 1) )
riguardo alla classe pgTypeItem, la proprietà Type ha un significato generico che identifica grossolanamente il tipo, diciamo che per definizione ho
usato: C=carattere, N=numerico, B=binario; se il valore che tratta o che restituisce è un numerico, allora puoi impostarlo a
"N". Ad ogni modo, nei driver per PostgreSQLx, esiste sempre lo stesso metodo di inizializzazione, e per postgres esistono oggetti simili (se non addirittura uguali) a quelli che hai segnalato per mysql; puoi dare un
'occhiata da quelle parti... Comunque, il tipo al momento è solo informativo, e non ha utilizzi pratici nel programma.
- Devo mettere i nuovi tipi in ordine alfabetico mischiati con gli altri, oppure li metto tutti alla fine per raggrupparli? Sono 8.
guarda, puoi anche mandarmeli via email, o postare direttamente qui le righe di codice, è inutile che mi invii tutto il file, anche perchè comunque dovrei anallizarne prima le differenze, visto che comunque ci lavoro in modifica. Insomma, non ci sono problemi.
- Con Parameter ti riferisci ai parametri utilizzati per creare il campo, cioè in pratica le dimensioni?
anche questo è descrittivo, se vedi quelli già presenti, danno un'idea di come deve essere impostato un determinato tipo di campo, e quali dati accetta e restituisce; quelli che ho già inserito, li ho determinati leggendo la doc ufficiale di mysql, andando ad analizzare eventuali varianti, ma anche qui nessun problema, perchè al momento l
'unica cosa cosa davvero utile a gDesigner è il nome del tipo, il resto al momento è tutta descrizione, anche se gli ho dato una parvenza di ordine e classificazione...
A parte le descrizioni ho lasciato tutti gli altri campi in bianco. La documentazione non fa cenno alla memoria occupata. In effetti, a parte POINT, sono tutte collezioni di oggetti e quindi immagino non sia calcolabile. Gli altri campi (massimo, minimo, risoluzione) non sono applicabili.
perfetto, se non esisono vincoli, non è necessario evidenziarli.Riguardo alla tua idea, al momento mi sembra buona, e non vedo problemi nell'applicarla, tranne per il fatto che allora la proprietà type deve essere utilizzata e impostata
in modo vincolante e restrittivo. In realtà, il creare una classe pgTypeItem solo per gestire i nomi dei tipi, non era nei miei intenti, e nel futuro pensavo di dargli un significato più incisivo nel programma; se hai tempo, puoi certamente provare ad implementare la tua idea, poi la vediamo insieme. :
ok:

Registrato
Si è probabile che i tipi siano gli stessi, credo ci sia uno standard che definisce queste cose.
In MySQL comunque funziona così: GEOMETRY è una classe astratta, poi sotto c
'è una gerarchia di sottoclassi. Alcune classi sono istanziabili tramite un'apposita funzione, tipo POINT(x y), altre
no perchè troppo generiche. A parte GEOMETRY, mi pare che tutte quelle utilizzabili come tipi siano istanziabili, ma non tutte le classi istanziabili sono usabili come tipi, perchè magari sono troppo specifiche. In realtà una volta che inizi a usarle capisci che è tutto perfettamente logico, anche forse non sembra.
Questo per dire che è difficile schematizzarle...
Ti copio qui quello che ho
fatto
ME.AddDatatype(pgTypeItem.Create("GEOMETRY", "G", "", "", "", "", "", "Generic geometric object"))
ME.AddDatatype(pgTypeItem.Create("GEOMETRYCOLLECTION", "G", "", "", "", "", "", "Collection of geometric objects"))
ME.AddDatatype(pgTypeItem.Create("LINESTRING", "G", "", "", "", "", "", "Geometric line made of segments"))
ME.AddDatatype(pgTypeItem.Create("MULTILINESTRING", "G", "", "", "", "", "", "Collection of geometric linestrings"))
ME.AddDatatype(pgTypeItem.Create("MULTIPOLYGON", "G", "", "", "", "", "", "Collection of geometric polygons"))
ME.AddDatatype(pgTypeItem.Create("MULTIPOINT", "G", "", "", "", "", "", "Collection of geometric points"))
ME.AddDatatype(pgTypeItem.Create("POINT", "G", "", "", "", "", "", "Geometric 0-dimensional object"))
ME.AddDatatype(pgTypeItem.Create("POLYGON", "G", "", "", "", "", "", "Geometric polygon"))

Registrato
Pagine:
1 [
2]
3 4 ... 21 Vai su