Newsgroup: it.comp.lang.delphi
Titolo: Connessione MySQL che dolori!

Ciao a tutti,
ho qualche piccolissimo problema di connessioni a un DB MySQL tramite
un form che ho appena creato. Questi sono i passaggi eseguiti:
- ho inserito nel form i componenti
TSQLConnection (dbexpress),
TSQLQuery (dbexpress),
TDataSetProvider (data access)
TClientDataSet (data access)
TDataSource (data access)
TDBComboBox (data controls)
- ho assegnato le proprieta'
DBComboBox1->DataSource = Datasource1
DBComboBox1->DataField = campo1
Datasource1->DataSet = ClientDataSet1
ClientDataSet1->ProviderName=DataSetProvider1
DataSetProvider1->DataSet = SQLQuery1
SQLQuery1->SQLConnection = SQLConnection1
SQLQuery1->SQL = select campo1 from mydatabase.mytabella
SQLConnection1->ConnectionName=MYSQLConnection
La connessione viene attivata senza problemi, idem per la SQLQuery1 e
ClientDataSet1 (agendo sulle rispettive proprietà Active e settandole
a true non ho alcun errore di sorta); il problema è che quando avvio
il form per i test, la ComboBox si popola con una data (30/12/1899)
assolutamente inesistente all'interno di tutto il DB. La tabella
mytabella contiene due record e campo1 contiene semplicemente la
parola "prova1" e "prova2".
Invece se la proprietà DBComboBox1.DataField la lascio vuota, non
compare niente, nemmeno la data scaturita dalla fantasia di delphi.
Qualcuno sa darmi una spiegazione di questo dato misterioso?
Grazie mille

 compare niente, nemmeno la data scaturita dalla fantasia di delphi.
La data 30/12/1899 non è "scaturita dalla fantasia di Delphi" e non è
nulla di misterioso.  Quella data è la data di riferimento per Delphi (e
per Windows, più in generale) equivalente al valore 0 (altri sistemi, vedi
Unix, utilizzano altri riferimenti: .  Evidentemente, il campo relativo
del database è NULL e dovendo Delphi convertire il valore NULL in un
valore plausibile con il formato Double delle date, lo trasforma in 0 e
trasformandolo in 0 viene fuori l'equivalente di 0 per un TDateTime,
ovvero 30/12/1899.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 compare niente, nemmeno la data scaturita dalla fantasia di delphi.
La data 30/12/1899 non è "scaturita dalla fantasia di Delphi" e non è
nulla di misterioso.  Quella data è la data di riferimento per Delphi (e
per Windows, più in generale) equivalente al valore 0 (altri sistemi, vedi
Unix, utilizzano altri riferimenti: .  Evidentemente, il campo relativo
del database è NULL e dovendo Delphi convertire il valore NULL in un
valore plausibile con il formato Double delle date, lo trasforma in 0 e
trasformandolo in 0 viene fuori l'equivalente di 0 per un TDateTime,
ovvero 30/12/1899.
Ora, svelato l'arcano, di grazia spiegami cosa c'entra il subject del tuo
messaggio.  Usa (come si suole), un subject più significativo per i tuoi
messaggi.


Grazie della dritta.
Per il subject non sapevo che titolo dare e visto l'inerenza a MySQL e
connessioni...non credo di dovermi lapidare per questo ma se
preferisci..la prima pietra da scagliarmi te la do io in omaggio :) Le
altre però le paghi, non farti illusioni.

Comunque, tornando a noi, ho sistemato il DataField con il nome
corretto del campo (che è scritto con la prima lettera maiuscola) e ho
controllato la stringa SQL per evitare altri errori simili. Ora tutto
risulta perfetto, in teoria, perchè ancora mi da lo stesso problema di
prima eppure i dati nella tabella ci sono eccome! Deve esserci
qualcosa che ancora mi sfugge ma cosa? E' la prima volta che mi
connetto a un DB con delphi ma ho seguito passo passo le guide che ho
trovato e ancora non va.
Grazie ancora dell'aiuto

una manina?

 un form che ho appena creato. Questi sono i passaggi eseguiti:
Se ti può esser di aiuto, io non uso dbexpress. Sia per mysql che per
postgresql e sqlite uso le zeoslib e funzionano bene:
http://sourceforge.net/projects/zeoslib/
Funzionano come i "vecchi" componenti TTable e Tquery.... o meglio, le
proprietà ed i metodi sono molto simili. L'accesso al db avviene in modo
diretto (senza odbc, dbe o similari)
Se non ti funziona il dbexpress con mysql, ricordati che esistono le zeoslib
P.S.
su questo forum vengo saltuariamente, quindi se mi rispondi, non ti
aspettare una mia risposta a breve scadenza
Ciao
Gianni

Se non ti funziona il dbexpress con mysql, ricordati che esistono le zeoslib
dbExpress funziona *EGREGIAMENTE* anche con MySQL (a meno di usare il
driver giusto).

Infatti dopo svariati tentativi andati a vuoto con dbExpress ho
installato i Zeos e ora sono riuscito a fare quello che mi serviva,
devo ancora impararmi bene le varie funzioni e proprietà però mi
sembrano più intuitivi rispetto a dbExpress. Ora sto cercando di
capire la via corretta per fare gli update, insert e delete dei dati;
per adesso quello che faccio, una volta che i dati vengono modificati
dall'utente, è cambiare la stringa SQL di ZQuery con i vari insert,
update e delete per poi dare la ExecSQL ma non mi convince molto.
Ogni volta che cambio la stringa SQL devo riattivare la ZQuery, fare
l'ExecSQL, modificare nuovamente la stringa SQL con una select,
riattivare ZQuery, disattivare ClientDataSet, riattivare ClientDataSet
e fare il refresh della DBLookupComboBox.
In pratica la mia maschera contiene la DBLookupComboBox che contiene
il nome dei clienti inseriti nel DB, quando l'utente seleziona un
cliente dalla combo automaticamente vengono caricati il resto dei dati
(sede, telefono, fax, PI, ecc) in vari campi edit in modo che l'utente
possa modificarne i valori. Se a questo punto viene premuto il bottone
"Modifica", viene lanciata la procedura di Update che ho descritto
precedentemente. Vista l'enormità dei passaggi da fare mi viene il
grosso dubbio che non sia la via corretta, in più devo capire anche
come funzionano le transazioni e se effettivamente possono servirmi.
Per ora sviluppo su MySQL 4.1 ma se farò uso delle transazioni passerò
alla 5.0
Si attendono consigli, sempre ben accetti.
Grazie a tutti

 installato i Zeos e ora sono riuscito a fare quello che mi serviva,
"Infatti" cosa ? Il problema non è dbExpress; come già detto, i dbX
funzionano *egregiamente*, anche con MySQL. Impara a usare gli strumenti.


Oh ma tu sei sempre mestruato? Stai sereno ragazzo mio! Non sono nato
imparato e dopo svariate prove e test con i dbExpress andati a vuoto
sono passato agli Zeos, certo non perchè dbExpress non funziona ma
semplicemente perchè non sono riuscito a capire come funzionano e il
tuo post non mi ha illuminato, mi ha fatto capire che il dato non
veniva recuperato da DB (che non è poco, lo ammetto) ma la soluzione
al problema non l'ho trovata e nessuno mi ha dato una mano, tu
incluso. Se invece di rispondere ai post con le solite frasi da
saccente che non servono a una mazza a novelli come me, ti mettessi a
rispondere fornendo informazioni e consigli sarebbe meglio per tutti,
invece di dire le cose a spizzichi e mozzichi in stile rebus. Lo sa
anche mio nonno che devo imparare a usare gli strumenti messi a
disposizione da delphi ma non so voi, io non sono in grado di
schioccare le dita e conoscere tutto a menadito, mi ci vuole pratica,
sbattere la testa un po di volte e continuare a provare cercando di
studiare il codice con manuale alla mano. Purtroppo capita spesso di
non riuscire a comprendere il funzionamento di alcuni componenti e
provo a chiedere delucidazioni su questo NG; certo che se tutti
rispondessero come te sarebbe forse solo tempo sprecato. So benissimo
che sei ferrato su delphi e che non so nemmeno 1/4 di quello che sai
tu e proprio per questo dovresti dare indicazioni e suggerimenti a
persone come me. Attenzione che non pretendo la stesura di nessun
codice da parte vostra ma solo delucidazioni e consigli per capire
dove andare a parare e per poter conoscere meglio i vari problemi.
Scendi dal piedistallo qualche volta e prova a camminare tra le
persone comuni, vedrai che c'è più soddisfazione.
Senza rancore. Buona giornata.

 persone comuni, vedrai che c'è più soddisfazione.
Ma vaffanculo. *plonk*.


 Ma vaffanculo. *plonk*.
Va bhe, non volevo offenderti ma solo darti un mio parere, sorry.

 siamo tutti e due adulti e vaccinati.
LOL... derogo dal proposito iniziale (solo questa volta) e ti rispondo
solo perché mi diverte (e purtroppo da newsland non ho realmente modo di
killare, anche se posso tranquillamente ignorare la lettura, come farò
dopo questa ultima risposta). Sono ilarmente incuriosito: che cosa ti fa
pensare che una persona abbia voglia di venirti a prendere a casa? che ti
voglia denunciare ? che ti mandi dei virus  o che si sforzi di formattarti
il PC ? Sei consapevole di meritare tutte queste cose ? ... be', problema
tuo, io di certo non mi sforzerò di fare alcunché del genere; ho da
spendere meglio il mio tempo.  Quando ti dico di stare "attento" a quello
che scrivi, il consiglio è generale, perché qui dentro nessuno è pagato
per risolvere i tuoi problemi o per risponderti nel modo in cui più ti
aggrada. Chiediti, piuttosto, perché certa gente riceve aiuto nel modo più
corretto e tal'altra no. Scoprirai che queste persone *CHIEDONO* aiuto nel
modo più corretto.  Non sono io che devo spiegare come si espongono delle
richieste e dei problemi, sta al buon senso di ciascuno e proprio nel caso
in cui ai tuoi neuroni servisse supporto, c'è fior di informazione in
giro: informati.  Stai attento a dire a una persona esperta nel linguaggio
in cui ti senti "novello" di non darti risponste che ti fanno perdere
tempo, perché: 1) non sai realmente se sono risposte inutili (sei novello
e pivello per tua stessa ammissione); 2) se consideri il fattore
preziosità del tempo, sicuramente ci sta perdendo la persona che ti
risponde, non tu. Quindi, la prossima volta stai "attento", attento a non
rischiare di essere tu quello che fa e dice scemenze ;-)
Sappi, infine, che non mi hai "offeso" in alcun modo. Se ti sbatto nel
kill-file è perché non voglio perdere tempo con gente come te; c'è tanta
altra gente che merita d'essere aiutata. Putroppo sei capitato in un
momento in cui il ng è febbricitante di trollaggine acuta e mi va così ;-)
Adios... *plonk* (sul serio).


So già che non lo leggerai ma io ci tengo ugualmente a chiarire le
questioni.
Da quello che mi dici in quest'ultimo post credo che ci sia stata un
po di incomprensione. Dico questo perchè ciò che dici è vero, chiunque
da supporto qui o in altri forum lo fa per spirito sportivo; l'ho
fatto anche io e ho incontrato persone che "pretendevano" una
risposta. Non è il mio caso, di fatti non ho preteso niente e non
pretendo niente tuttora; non mi sembra di averti ripreso per questo e
non intendo farlo, gli interventi che vengono fatti vanno presi per
quello che sono. Quello che mi ha dato fastidio è solo l'atteggiamento
che hai avuto e che ho visto in altri tuoi interventi e questa frase
"Infatti" cosa ? Il problema non è dbExpress; come già detto, i dbX
funzionano *egregiamente*, anche con MySQL. Impara a usare gli
strumenti.
Non mi pare molto simpatica ma piu che altro mi è sembrata
un'aggressione, un rimprovero, chiamalo come ti pare e la cosa mi da
molto fastidio anche perchè hai risposto in questo modo ad un mio post
che già ammetteva il fatto di dover studiare meglio i vari oggetti di
delphi e relativo funzionamento. Volevo solo far notare che con i
dbExpress ho avuto difficoltà di comprensione che invece con Zeos non
ho avuto, tutto qui. Da questa cosa ho trovato il tuo post fuori
luogo, aggressivo e inutile con conseguente mia risposta a tono.
That's all, deduco che io e te siamo incompatibili (già successa cosa
analoga tempo fa, si vede che te ne sei dimenticato o che ho evitato
di risponderti, ora non ricordo). Discussione chiusa, così evitiamo di
perdere tempo tutti e due su queste baggianate.
Grazie comunque per il tuo primo intervento che mi è stato ugualmente
di aiuto nel comprendere il problema.
Buona giornata e buon lavoro