Newsgroup: it.comp.lang.delphi
Titolo: Stranezze del TClientDataset

Ho un problema molto insolito.
In un programmino che gestisce delle anagrafiche appoggiandosi su db
access 2000, ho aggiunto  un form per la ricerca dei dati.
Questo form contiene un TClientDataSet, Un DataSource, una DBGrid e un
Tedit.
La DBGrid e' collegata al DataSource, a sua volta collegato al
ClientDataset.
Ad ogni variazione del Tedit, faccio una locate per fare in modo che
il record corrente cambi in accordo con il contenuto del Tedit.
procedure TTableBrowse.Edit1Change(Sender: TObject);
var s,s1 :string;
begin
   s := 'Cognome';
   s1 := Edit1.text;
   if Edit1.Focused then begin
      try
         if Trim(s1) = '' then ClientDataSet.First
         else
ClientDataSet.Locate(s,s1,[loCaseInsensitive,loPartialKey]);     
      except on e: exception do begin
            end;
      end;
   end;
end;
Questa ricerca funziona su tutte le macchine che abbiamo in ufficio
(tutte Win2000), installato il programma su un Win ME invece la
ricerca non funziona!!!
Non da' errori, ma cambiando il contenuto del tedit il record corrente
non cambia!
Ho provato ad installare sulla macchina WinME l'MDAC + recente, il
service pack del JetEngine, ma non c'e' stato nulla da fare.
C'e' qualcosa che manca nel sistema operativo?
Qualcuno ha gia' avuto simili problemi?
Ciao
MOrde.

La MIDAS.DLL è presente e correttamente registrata?

    end;
Fossi in te rivedrei questo codice.
Intercetti una eccezione al solo scopo di non far vedere all'utente che
qualcosa è andato storto.
Ma, se lui ti chiama x segnalarti un problema, in base a cosa ti metti di
buona lena a fare il debug?
I messaggi di errore sono VITALI per il debug.
Ho avuto a che fare con un gestionale che nascondeva gli errori.
Sai che bello x i clienti credere di aver correttamente eseguito
registrazioni di prima nota, fatture, etc e poi scoprire che i dati al db
non sono mai arrivati?
Comincia col disattivare questo try..except oppure ad aggiungere un semplice
raise.
In questo modo inizi a vedere se sul WinsozzME (Munnezz' Edition) va in
eccezione.
Se proprio non vuoi far vedere i dettagli dell'errore al cliente potresti
far uscire un messaggio generico e crearti un file di log dell'errore nel
quale scrivi tutte le info relative all'errore stesso come data, ora, testo
del messaggio, eventuali parametri et similia.
Poi, puoi dire al cliente di inviarti qusto file x email in modo da avere
tutti i dettagli utili per la ricerca dell'errore.
Bye
A.


E' stata linkata staticamente all'eseguibile poi, visto il problema,
l'ho anche registrata nel sistema, ma niente da fare....
Morde

Grazie dei consigli.
Meno male che quello e' lunico punto dove non ho tracciato l'errore.
Infatti tutto il software intercetta le eccezioni e le mostra al
cliente, oltre che usare un sistema di commit/rollback per ogni
scrittura ed un sistema di logging a mio giudizio molto efficace
(overseer).
Il fatto e' che non essendosi mai verificato un problema in quel
punto, non avevo pensato neanche di mostrare un'eventuale eccezione.
Io insisto con l'idea che manchi qualcosa nel sistema ospita (WinME),
ma avendo allineato l'MDAC all'ultima release ed avendo ache
aggiornato il jet engine, non saprei cos'altro c'e' di diverso.
Cmq provero' a aggiungere dei log anche su quella locate, vedremo se
dira' qualcosa.....
Ciao
Morde

 wrote:
Ho messo le trace: nella macchina funzionante ogni locate restituisce
TRUE, mentre sulla macchina non funzionante la locate restituisce
sempre FALSE.
L'archivio ovviamente e' lo stesso.
Sempre piu' confuso..... anche perche' il clientdataset dovrebbe
lavorare solo in memoria, quindi non capisco perche' falliscono le
locate sistematicamente.
Inoltre non vengono sollevate eccezioni di nessun genere.
Morde

1) fai una ricerca e vedi se hai + copie di midas.dll e dbclient.dll
2) informati se su quella macchina capitano altre cose strane
A.

Sempre peggio.....
http://distribucon.com/midasbug/
Morde

2) informati se su quella macchina capitano altre cose strane
Le macchine (ne ho travata un'altra in ufficio che presenta lo stesso
problema,il so e'  win98) sono a posto.
Guarda, navigando per google gruppi ne sto leggendo delle belle sulla
locate del clientdataset....
Morde