Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    247

    [DELPHI] Un dataset particolare...

    Salve a tutti,

    ho bisogno di inserire dei dati in una DBGrid in runtime. Questi dati non devono essere estrapolati da una base dati, ma creati lì per lì dal programma. Mi serve un dataset completamente offline, slegato da qualsiasi database, e che funga solo da struttura per contenere dei dati che vengono creati sul momento.

    Utilizzando TADOTable o TClientDataSet mi trovo di fronte a messaggi d'errore del tipo "Missing ConnectionString property" che sono del tutto comprensibili, visto e considerato che quei componenti sono pensati per operare online.

    Se creo un componente TClientDataSet in runtime, riesco ad evitare, con qualche accorgimento, la comparsa di messaggi d'errore, ma mi sembra pur sempre una soluzione poco "pulita".

    Esiste già un dataset del genere o me lo devo derivare?


    Grazie in anticipo

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463
    L'uso del componente ClientDataSet è una soluzione pulitissima.

    Il componente è appositamente creato per essere slegato dalla base dati sottostante, tant'è che si può utilizzare per implementare logica di ricerca, filtri, selezione e aggiornamento dati applicandoli a qualsivoglia database.

    Occorre vedere come è stato configurato il componente per poter essere usato a questo scopo.

    In genere, è sufficiente inserire i campi della struttura nella proprietà Fields; a designtime, con il tasto destro sul componente, è possibile scegliere Create DataSet per creare la tabella così strutturata e inserire dati a runtime. Attraverso metodi opportuni, il contenuto del CDS può essere salvato, con struttura e dati, nei formati binario e XML (o trasferirli via socket!).

    Insomma, si può fare davvero di tutto e di più. Prova a cercare un po' di documentazione a riguardo...

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  3. #3
    Basta che prendi un TClientDataset, crei i campi che ti servono nel fields editor , e prima di fare l'open a runtime esegui l'istruzione

    codice:
    YourClientDataset.CreateDataSet;
    in questa maniera lo puoi usare senza nessun provider. i dati resteranno in memoria fino a quando non farai il close.

    Ciao

  4. #4
    ops... aveva già risposto Alka

    ciao

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    247
    Originariamente inviato da alka
    L'uso del componente ClientDataSet è una soluzione pulitissima.

    Il componente è appositamente creato per essere slegato dalla base dati sottostante, tant'è che si può utilizzare per implementare logica di ricerca, filtri, selezione e aggiornamento dati applicandoli a qualsivoglia database.

    Occorre vedere come è stato configurato il componente per poter essere usato a questo scopo.

    In genere, è sufficiente inserire i campi della struttura nella proprietà Fields; a designtime, con il tasto destro sul componente, è possibile scegliere Create DataSet per creare la tabella così strutturata e inserire dati a runtime. Attraverso metodi opportuni, il contenuto del CDS può essere salvato, con struttura e dati, nei formati binario e XML (o trasferirli via socket!).

    Insomma, si può fare davvero di tutto e di più. Prova a cercare un po' di documentazione a riguardo...

    Ciao!
    Perfetto. Quindi utilizzare TClientDataSet è la soluzione più corretta. Volevo esserne certo prima di iniziare a studiare il componente. So bene che alcune delle mie "trovate" (vedi modificare la VCL) sono tutt'altro che brillanti.

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463
    Originariamente inviato da firefox88
    Perfetto. Quindi utilizzare TClientDataSet è la soluzione più corretta. Volevo esserne certo prima di iniziare a studiare il componente. So bene che alcune delle mie "trovate" (vedi modificare la VCL) sono tutt'altro che brillanti.
    E' ovvio che, essendo un TDataSet, la sua struttura obbliga ad un approccio del tipo 1) insieme di record, 2) presenza di un record corrente, 3) navigazione tra i record...

    Se necessiti di una struttura diversa o più complessa, allora dovresti crearla scrivendo semplicemente la classe relativa.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    247
    Originariamente inviato da alka
    E' ovvio che, essendo un TDataSet, la sua struttura obbliga ad un approccio del tipo 1) insieme di record, 2) presenza di un record corrente, 3) navigazione tra i record...

    Se necessiti di una struttura diversa o più complessa, allora dovresti crearla scrivendo semplicemente la classe relativa.

    Ciao!
    Ma figuriamoci.

    A me serve solo una struttura che contiene dati di natura eterogenea da presentare in una DBGrid: non c'è niente di meglio di un dataset!

    Grazie a tutti dell'aiuto.

  8. #8
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463
    Originariamente inviato da firefox88
    A me serve solo una struttura che contiene dati di natura eterogenea da presentare in una DBGrid: non c'è niente di meglio di un dataset!
    Sì, ovviamente se usi un TDataSet (o derivato) puoi sfruttare tutto ciò che normalmente si riferisce a tabelle, query, ecc., cioè a tutti i DataSet, come ad esempio agganciare controlli visuali.

    Il componente TClientDataSet racchiude molta "magia": approfondiscilo e rimarrai stupito di quante cose è in grado di fare, anche slegato da una base dati per la modifica "disconnessa" dei dati.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

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 © 2025 vBulletin Solutions, Inc. All rights reserved.