Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [D2010][MySQL] clientdataset, field not found

    Ciao a tutti, sto sbattendo la testa con un errore a mio parere piuttosto strano ed inusuale che mi sta facendo impazzire...nel dettaglio:

    - sto sviluppando un'applicazione che, in fase di avvio, recupera i parametri di connessione del db da un file ini, si connette, apre l'archivio utenti e visualizza la form per il login;
    - bene, fin qui nulla di strano, sul pc in cui sviluppo tutto a posto senza errori;
    - non appena faccio partire l'applicazione sul pc del cliente (W7), mi esce l'errore "cUtenti: Field 'MasteAd' no found.": cosa significa?
    - sul pc del cliente ho installato e configurato correttamente MySQL, la connessione al db avviene senza errori, il componente TSQLtable che punta all'archivio utenti si apre senza problemi mentre esce l'errore all'apertura del corrispondente ClientDataset.

    Grazie per la collaborazione,
    Maurizio

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296
    C'è sicuramente un problema nella configurazione del componente che, per qualche motivo (assenza o diversità di dati rispetto al tuo cliente), non emerge nel tuo ambiente di sviluppo.

    Fatti inviare il database del cliente, oppure aggiorna la sua applicazione, per sicurezza.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Il database e la versione dell'applicazione sono identici su entrambi i pc, proprio ora sto eseguendo i test in ufficio dal cliente, con a fianco il portatile su cui sviluppo: stesso db, stesso exe...ma tecnicamente cosa può portare l'errore sull'open del clientdataset mentre l'open sul sqltable non da problemi?

    Grazie,
    Maurizio

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296
    Originariamente inviato da Mco2983
    Il database e la versione dell'applicazione sono identici su entrambi i pc, proprio ora sto eseguendo i test in ufficio dal cliente, con a fianco il portatile su cui sviluppo: stesso db, stesso exe...ma tecnicamente cosa può portare l'errore sull'open del clientdataset mentre l'open sul sqltable non da problemi?
    Sul componente TClientDataSet, analogamente a tutti gli altri componenti di tipo TDataSet (come lo stesso TSqlTable) è possibile definire campi persistenti tramite il "Field Editor" (che appare con un doppio clic sul componente).

    Si tratta di un editor che permette di importare una rappresentazione Delphi (quella creata con valori predefiniti a runtime) dei campi fisici che fanno parte della tabella, a cui se ne possono affiancare altri personalizzati, forzando il numero, il tipo e la struttura dei campi.

    Se la fonte dati da cui provengono i dati caricati dal CDS cambia, ad esempio se uno dei campi personalizzati non esiste più, il componente segnala un errore.

    Si dovrebbe vedere quindi nell'ordine la struttura della tabella, i campi visibili sul componente TSQLTable e poi la loro configurazione nel TClientDataSet in cui vengono caricati, per garantire che ci sia contiguità e che non si prefigurino casi in cui qualche campo manca, o viene cambiata magari la tabella di origine (sono tutte ipotesi).
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    Ciao, ho risolto il problema cambiando il tipo di campo che dava problemi (tinyint) in smallint.

    Ora però se n'è presentato un altro: sempre all'apertura di un clientdataset, compare l'errore "operation not applicable". Ricercando in rete mi sembra di aver capito che è legato a campi di tipo "date", è esatto?

    Premetto che i clientdataset in questione hanno già caricato, come da te suggerito, a designtime via field editor la lista dei campi, che quindi risulta identica al dataset ed all'archivio nel db.

    Il "bello" di questa situazione è che lo stesso backup dati con stessa versione dell'exe sul mio portatile funziona (xp e mysql 5.1.32) mentre sul pc del cliente no (w7-32bit e mysql 5.1.61).

    Ho già sviluppato più progetti con delphi interfacciati a db mysql, ma mai mi era capitata una situazione così...

    Grazie,
    Maurizio

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296
    Io verificherei che non vi siano incompatibilità tra le differenti versioni di MySQL e del driver utilizzato.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  7. #7
    Ciao, ho trovato la causa di tutti quei mali!
    Dopo innumerevoli ricerche, tentativi, installazioni e configurazioni di MySQL, sono arrivato a copiare la versione che utilizzo della libreria midas nella cartella system del s.o. e ... ora funziona!
    Ora mi chiedo, dato che non lo avevo mai fatto, e che nelle altre installazioni dei clienti fatte fino ad ora non era mai capitato, è un'operazione di routine, quindi da fare ad ogni nuova installazione?

    Grazie,
    Maurizio

  8. #8
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296
    Originariamente inviato da Mco2983
    Ora mi chiedo, dato che non lo avevo mai fatto, e che nelle altre installazioni dei clienti fatte fino ad ora non era mai capitato, è un'operazione di routine, quindi da fare ad ogni nuova installazione?
    Devi ridistribuire il file Midas.dll della versione di Delphi con cui produci l'applicazione, oppure includere la unit MidasLib nella clausola "uses", se non ricordo male, per incorporarne il contenuto.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  9. #9
    Ok, grazie mille per le tue informazioni Marco!

    Ciao,
    Maurizio

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.