* * * *

Privacy Policy

Blog italiano

Clicca qui se vuoi andare al blog italiano su Lazarus e il pascal.

Forum ufficiale

Se non siete riusciti a reperire l'informazione che cercavate nei nostri articoli o sul nostro forum vi consiglio di visitare il
Forum ufficiale di Lazarus in lingua inglese.

Lazarus 1.0

Trascinare un file nel programma
DB concetti fondamentali e ZeosLib
Recuperare codice HTML da pagina web
Mandare mail con Lazarus
Stabilire il sistema operativo
Esempio lista in pascal
File INI
Codice di attivazione
Realizzare programmi multilingua
Lavorare con le directory
Utilizzare Unità esterne
TTreeView
TTreeview e Menu
Generare controlli RUN-TIME
LazReport, PDF ed immagini
Intercettare tasti premuti
Ampliare Lazarus
Lazarus e la crittografia
System Tray con Lazarus
UIB: Unified Interbase
Il file: questo sconosciuto
Conferma di chiusura di un applicazione
Liste e puntatori
Overload di funzioni
Funzioni a parametri variabili
Proprietà
Conversione numerica
TImage su Form e Panel
Indy gestiore server FTP lato Client
PopUpMenu sotto Pulsante (TSpeedButton)
Direttiva $macro
Toolbar
Evidenziare voci TreeView
Visualizzare un file Html esterno
StatusBar - aggirare l'errore variabile duplicata
Da DataSource a Excel
Le permutazioni
Brute force
Indy 10 - Invio email con allegati
La gestione degli errori in Lazarus
Pascal Script
Linux + Zeos + Firebird
Dataset virtuale
Overload di operatori
Lavorare con file in formato JSON con Lazarus
Zeos ... dietro le quinte (prima parte)
Disporre le finestre in un blocco unico (come Delphi)
Aspetto retrò (Cmd Line)
Lazarus 1.0
Come interfacciare periferica twain
Ubuntu - aggiornare free pascal e lazarus
fpcup: installazioni parallele di lazarus e fpc
Free Pascal e Lazarus sul Raspberry Pi
Cifratura: breve guida all'uso dell'algoritmo BlowFish con lazarus e free pascal.
Creare un server multithread
guida all'installazione di fpc trunk da subversion in linux gentoo
Indice
DB concetti fondamentali e connessioni standard
Advanced Record Syntax
DB concetti fondamentali e DBGrid
DB concetti fondamentali e TDBEdit, TDBMemo e TDBText
Advanced Record Syntax: un esempio pratico
Superclasse form base per programmi gestionali (e non)
Superclasse form base per programmi gestionali (e non) #2 - log, exception call stack, application toolbox
Superclasse form base per programmi gestionali (e non) #3 - traduzione delle form
Superclasse form base per programmi gestionali (e non) #4 - wait animation
Un dialog per la connessione al database:TfmSimpleDbConnectionDialog
Installare lazarus su mac osx sierra
immagine docker per lavorare con lazarus e free pascal
TDD o Test-Driven Development
Benvenuto! Effettua l'accesso oppure registrati.
Aprile 16, 2024, 07:11:05 am

Inserisci il nome utente, la password e la durata della sessione.

78 Visitatori, 0 Utenti

Autore Topic: [RISOLTO]Domande varie su DB ed SQL in genere  (Letto 5668 volte)

bonmario

  • Hero Member
  • *****
  • Post: 1300
  • Karma: +10/-1
[RISOLTO]Domande varie su DB ed SQL in genere
« il: Marzo 06, 2019, 08:26:30 am »
Ciao a tutti,
esiste già qualcosa che permette di stampare o di scrivere su un file (xml, csv, o altro) il contenuto di una DBGrid, o devo farmeli da solo?

Grazie, Mario
« Ultima modifica: Marzo 12, 2019, 11:17:25 am da bonmario »

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 3249
  • Karma: +12/-0
Re:"Esportare" i dati di una DBGRID
« Risposta #1 il: Marzo 06, 2019, 08:30:43 am »
Io onestamente per quanto è semplice il codice lo avevo fatto da solo, in formato csv.
Ieri è passato, domani è futuro, oggi è un dono...

bonmario

  • Hero Member
  • *****
  • Post: 1300
  • Karma: +10/-1
Re:"Esportare" i dati di una DBGRID
« Risposta #2 il: Marzo 06, 2019, 10:27:17 am »
Ok, grazie, effettivamente il CSV si fa in pochi minuti..

Quello che più mi interessava era la stampa, perché non avevo ancora pensato a come gestire quelle tabelle che hanno troppe colonne per poter emettere tutti i campi di un record su una sola riga.
Però, ora che ci ripenso, forse mi conviene salvare la DBGrid in formato csv o Excel/Calc, in modo che poi l'utente finale lo possa aprire come un foglio di calcolo, e stamparlo da lì.

Ciao, Mario

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 3249
  • Karma: +12/-0
Re:"Esportare" i dati di una DBGRID
« Risposta #3 il: Marzo 06, 2019, 10:37:17 am »
Io sconsiglio la stampa delle griglie, troppe colonne e la stampa è illeggibile. Come dicevi tu, esportala e poi l'utente si gestirà la stampa da un foglio di calcolo come più gli aggrada
Ieri è passato, domani è futuro, oggi è un dono...

bonmario

  • Hero Member
  • *****
  • Post: 1300
  • Karma: +10/-1
Re:Domande varie su DB ed SQL in genere
« Risposta #4 il: Marzo 07, 2019, 08:01:01 am »
Ciao,
per non aprire un nuovo thread, ho cambiato il titolo di questo ...
Avrei un'altra domanda, sempre sulle DBGrid; io mi connetto al DB tramite ODBC, tra i campi che estraggo dal DB, ci sono anche alcuni campi di tipo carattere, che contengono descrizioni, quindi anche lettere accentate ecc. Bene, a video invece di vedere questi caratteri, vedo dei punti di domanda.
C'è una qualche impostazione della DBGrid che mi petmette di vederli correttamente, o li devo gestire io?

Grazie, Mario

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 3249
  • Karma: +12/-0
Re:Domande varie su DB ed SQL in genere
« Risposta #5 il: Marzo 07, 2019, 08:15:11 am »
Consiglio sempre di fare 3d separati, ma questa volta chiudo un occhio. Detto questo la dbgrid si aspetta di vedere campi con lunghezze definite. Tipo il varchar(255) lo fa vedere correttamente, i tipi TEXT o MEMO o BLOB li fa vedere come punti interrogativi o come [MEMO]. Quindi o cambi il tipo del campo in varchar con lunghezza definita oppure non puoi usarli dentro una dbgrid senza gestirteli a mano.
Ieri è passato, domani è futuro, oggi è un dono...

bonmario

  • Hero Member
  • *****
  • Post: 1300
  • Karma: +10/-1
Re:Domande varie su DB ed SQL in genere
« Risposta #6 il: Marzo 07, 2019, 06:25:49 pm »
Ciao,
probabilmente mi sono espresso male ... o non ho capito la tua risposta ...

Faccio un esempio.
Sul DB c'è un campo "DESCOM" dichiarato coma alfanumerico di 60, che contiene la stringa "Cefalù". Nella DBGrig, viene emesso come "Cefal?"

Ciao, Mario

antoniog

  • Scrittore
  • Sr. Member
  • *****
  • Post: 257
  • Karma: +0/-0
    • Informatica Utile
Re:Domande varie su DB ed SQL in genere
« Risposta #7 il: Marzo 08, 2019, 02:47:25 am »
ma che sistema operativo usi?
avrai solo la libertà che riuscirai a conquistarti e anche questa sarà incerta.

bonmario

  • Hero Member
  • *****
  • Post: 1300
  • Karma: +10/-1
Re:Domande varie su DB ed SQL in genere
« Risposta #8 il: Marzo 08, 2019, 08:08:11 am »
Io windows 10 "18.09", ma il "DB" mi è stato passato da altri.
Essendo però un DB MSSQL, credo che in ogni caso sia stato usato su una macchina Windows.

Ciao, Mario

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 3249
  • Karma: +12/-0
Re:Domande varie su DB ed SQL in genere
« Risposta #9 il: Marzo 08, 2019, 08:22:34 am »
Ciao,
probabilmente mi sono espresso male ... o non ho capito la tua risposta ...

Faccio un esempio.
Sul DB c'è un campo "DESCOM" dichiarato coma alfanumerico di 60, che contiene la stringa "Cefalù". Nella DBGrig, viene emesso come "Cefal?"

Ciao, Mario

E' un problema di encoding allora. Tu che versione di lazarus usi?
Prova così: aggiungi la unit

uses
  ... , LConvEncoding;

poi vai nell'evento GetText del tuo oggetto query e prova a scrivere quanto segue

procedure TForm2.ZQuery1Field2GetText(Sender: TField; var aText: string;
  DisplayText: Boolean);
begin
   aText := CP1251ToUTF8(Sender.AsString);
end;


Fammi sapere se funziona.
Ieri è passato, domani è futuro, oggi è un dono...

bonmario

  • Hero Member
  • *****
  • Post: 1300
  • Karma: +10/-1
Re:Domande varie su DB ed SQL in genere
« Risposta #10 il: Marzo 08, 2019, 11:24:29 am »
Uso la versione "futura" di solito mi aggiorno dai sorgenti SVN almeno una volta al mese.
Al momento sono messo così:

Lazarus 2.1.0 r60471 FPC 3.0.4 i386-win32-win32/win64

Non credo di poter usare questa soluzione, perché il programma in questione riceve in input il nome di una tabella e ne visualizza il contenuto.
Quindi non ho dichiarato i campi.

Grazie, Mario

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 3249
  • Karma: +12/-0
Re:Domande varie su DB ed SQL in genere
« Risposta #11 il: Marzo 08, 2019, 01:45:48 pm »
Infatti con la soluzione che ti ho proposto non c'è bisogno di sapere il nome del campo.
Ieri è passato, domani è futuro, oggi è un dono...

bonmario

  • Hero Member
  • *****
  • Post: 1300
  • Karma: +10/-1
Re:Domande varie su DB ed SQL in genere
« Risposta #12 il: Marzo 12, 2019, 09:46:02 am »
Ci ho messo un po', ma alla fine ho capito le tue risposte (purtroppo il mio livello è un po' basso, e ci devo ragionare su ....) !!!

Alla fine ho fatto così: subito dopo la ".Open" della query, ho aggiunto questo codice:
Codice: [Seleziona]
    for IdxCol:=0 to DBGrid1.Columns.Count - 1 do begin
      //Se in precedenza era stata assegnata per un'altra tabella, la reinizializzo
      DBGrid1.Columns[IdxCol].Field.OnGetText:=nil;

      //Se la colonna è di tipo stringa, la converto
      WrkDataType:=DBGrid1.Columns[IdxCol].Field.FieldDef.DataType;
      if (WrkDataType = ftFixedChar) then begin
        DBGrid1.Columns[IdxCol].Field.OnGetText:=@ConvertiCampiStrInUtf8;
      end;
    end;

Nella procedura "ConvertiCampiStrInUtf8", ho messo il codice che mi avevi suggerito.

Grazie ancora, Mario

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 3249
  • Karma: +12/-0
Re:Domande varie su DB ed SQL in genere
« Risposta #13 il: Marzo 12, 2019, 10:58:54 am »
Felice di averti aiutato. Ricorda di mettere risolto nel titolo del 3d.
Ieri è passato, domani è futuro, oggi è un dono...

bonmario

  • Hero Member
  • *****
  • Post: 1300
  • Karma: +10/-1
Re:Domande varie su DB ed SQL in genere
« Risposta #14 il: Marzo 12, 2019, 11:18:00 am »
Ricorda di mettere risolto nel titolo del 3d.

Cavolo, ho la stessa memoria di un pesce rosso !!!

Fatto ... grazie, Mario

 

Recenti

How To

Utenti
  • Utenti in totale: 785
  • Latest: gmax
Stats
  • Post in totale: 18769
  • Topic in totale: 2232
  • Online Today: 80
  • Online Ever: 900
  • (Gennaio 21, 2020, 08:17:49 pm)
Utenti Online
Users: 0
Guests: 78
Total: 78

Disclaimer:

Questo blog non rappresenta una testata giornalistica poiché viene aggiornato senza alcuna periodicità. Non può pertanto considerarsi un prodotto editoriale ai sensi della legge n. 62/2001.