* * * *

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 19, 2024, 04:04:57 am

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

397 Visitatori, 0 Utenti

Autore Topic: Lookup e campi stringa [Risolto]  (Letto 4749 volte)

Avogadro

  • Full Member
  • ***
  • Post: 217
  • Karma: +0/-0
Lookup e campi stringa [Risolto]
« il: Dicembre 08, 2017, 12:01:33 am »
Salve a tutti .

Allora, sto lavorando con Lazarus Release Candidate 5 of 1.8 (includes RC1 fpc 3.0.4) ( a proposito, è appena uscita   la release 1.8 di  Lazarus) .

Uso  squlite  come db e zeoslib come sua intefaccia .

Nell' ottica della gestione dei database la funzione "Lookup(const KeyFields: string; const KeyValues: Variant; const ResultFields: string): Variant; " non ha bisogno di presentazioni .

Solo che ho scoperto che in Lazarus quando il risultato è un campo stringa, il sistema resituisce non piu' un campo associato direttamente alla tabella,  a cui si puo' accedere con il classico "ztable1campo.asstring" ma genera una variabile di tipo "campo stringa"  (in Delphi non mi pare fosse così).

Ad esempio per 6 funzioni lookup di campi stringa Lazarus implementa quanto segue :

StringField1: TStringField;
StringField2: TStringField;
StringField3: TStringField;
StringField4: TStringField;
StringField5: TStringField;
StringField6: TStringField;

Non so perché è stata fatta questa scelta da chi ha sviluppato lazarus  e la cosa di per sè non è un problema all'interno del codice sorgente pascal ;  il problema si pone quando devo passare il campo stringa a un oggetto tipo un report (es:  https://sites.google.com/site/kryvich/reporter  )  che ha una sintassi di questo tipo :

{for ZQuery4}   
 
Operatore:       
Matrice: {ZQuery4.matrice}      
Denominazione della prova:       
Metodo di prova: { ZQuery4.norma}      
Parametro: { ZQuery4.PARAMETRO} ({ZQuery4.um})   
{end}

In questo esempio, ad "operatore" è associato il risultato di una funzione di lookup e non so come passare il suo valore al report che esige qualcosa del tipo {zquery4.operatore}.

La cosa è risolvibile con i componenti fpvectorial (http://wiki.freepascal.org/fpvectorial_-_Text_Document_Support )  ma così si  perde la flessibilità di crearsi un report in rtf preformttandolo prima con un wp tipo word (as esempio,  non è piu' possibile inserire delle immagini - tipo i loghi - all' interno del report) .

Unl'altra alternativa ancora è di usare excel per fare i report
http://wiki.freepascal.org/Office_Automation

Ma volendo ripegare sul buon vecchio report di lazarus  come si fa a passargli  una variabile diversa dai campi di una tabella?
« Ultima modifica: Dicembre 08, 2017, 08:20:49 pm da Avogadro »

Avogadro

  • Full Member
  • ***
  • Post: 217
  • Karma: +0/-0
Re:Lookup e campi stringa [Risolto]
« Risposta #1 il: Dicembre 08, 2017, 09:41:00 am »
Risolto.

Ho scaricato da  https://sites.google.com/site/kryvich/reporter la routine per la stampa dei report sulla base di un template rtf predefinito,  ho fatto la conversione da delphi a lazarus (sono state necessarie un paio di patch)  e anche se il campo lookup non compare esplicitamente nella parte delle dichiarazione delle variabili  esso poi viene "visto" a runtime nel momento in cui viene invocato il report .

Per completezza
Nel file rtf c'è questo codice:

{For Ztable2}
   {Ztable2.matrice}
{end}
   
Ztable2.matrice è il campo stringa restituito dalla funzione lookup.

Questo il codice per avviare  il report :

procedure TForm1.ToolButton10Click(Sender: TObject);
var
  TemplatePath, rprt: string;
  Reporter: TDbFreeReporter;

begin
   TemplatePath := ExtractFilePath(Application.ExeName)+'\test.rtf';
   rprt:=ExtractFilePath(Application.ExeName)+'\out.rtf'     ;

    Reporter := TDbFreeReporter.Create;
  try
    Reporter.AddDataSet(ztable2);
    //Reporter.AddDataSet(sqlquery2);
    //Reporter.AddDataSet(sqlquery3);
    Reporter.CreateReport(TemplatePath, rprt);
    ShellExecute(Application.MainForm.Handle, nil, pChar(rprt),
    nil, nil, 1);
  finally
      Reporter.Free;
  end;

end; 


Si sarebbe potuto ovviare anche con una query ad hoc ma è meglio così, si semplifica il codice  e non si deve passare dalle forche caduine dell'sql .
« Ultima modifica: Dicembre 08, 2017, 09:50:40 am da Avogadro »

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 3249
  • Karma: +12/-0
Re:Lookup e campi stringa [Risolto]
« Risposta #2 il: Dicembre 08, 2017, 02:09:42 pm »
Molto bene Avogadro.
Ieri è passato, domani è futuro, oggi è un dono...

Avogadro

  • Full Member
  • ***
  • Post: 217
  • Karma: +0/-0
Re:Lookup e campi stringa [Risolto]
« Risposta #3 il: Dicembre 08, 2017, 08:24:53 pm »
Con l'occasione: ho visto che a corredo di Lazarus ci sono dei pacchetti supplementari per  LazReport ;  qualcuno sa dove reperire delle documentazione in merito ?
Ho provato con google, nuovo oracolo dei tempi moderni, ma non ho trovato nulla.

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 3249
  • Karma: +12/-0
Re:Lookup e campi stringa [Risolto]
« Risposta #4 il: Dicembre 09, 2017, 03:52:43 pm »
Perchè non c'è molto da cercare. Devi installare il pacchetto e guardare gli esempi a corredo insieme al pacchetto!
Ieri è passato, domani è futuro, oggi è un dono...

Avogadro

  • Full Member
  • ***
  • Post: 217
  • Karma: +0/-0
Re:Lookup e campi stringa [Risolto]
« Risposta #5 il: Dicembre 09, 2017, 07:52:19 pm »
Da queste forche caduine  di installare ogni cosa che ispirasse curiosità ci sono già passato fin dai tempi del mitico delphi 5 ;   il problema quando non c'è un minimo di documentazione a corredo dei vari package è che a furia di installare e disinstallare il sistema diventa instabile e va crash e poi ripristinarlo è un casino .

Nell' ide di lazarus ci sono decine e decine di package pronti all' uso , ma chiedere di installarli tutti per sapere cosa mai fanno è semplicemente fuori luogo .

A mio avviso ci vorrebbe un po' di documentazione in piu' sui vari pacchetti disponibili ; ai bei tempi del fortran le librerie a corrredo dei compilatori avevano dei manuali che spiegavano filo e per segno cosa mai faceva e serviva una data routine , con tutte le variabili e costanti spiegate .
« Ultima modifica: Dicembre 09, 2017, 07:55:41 pm da Avogadro »

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2382
  • Karma: +10/-0
Re:Lookup e campi stringa [Risolto]
« Risposta #6 il: Dicembre 09, 2017, 08:25:55 pm »
Documentazione. Croce e delizia di ogni sviluppatore.
Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 3249
  • Karma: +12/-0
Re:Lookup e campi stringa [Risolto]
« Risposta #7 il: Dicembre 10, 2017, 09:17:19 am »
Avogadro, sono concorde con te, però purtroppo così non è. Su LazReport più che questo non trovi

http://wiki.freepascal.org/LazReport_Tutorial
Ieri è passato, domani è futuro, oggi è un dono...

Avogadro

  • Full Member
  • ***
  • Post: 217
  • Karma: +0/-0
Re:Lookup e campi stringa [Risolto]
« Risposta #8 il: Dicembre 10, 2017, 02:28:18 pm »
Documentazione. Croce e delizia di ogni sviluppatore.

"Straquoto"

Ciao a tutti


Avogadro

  • Full Member
  • ***
  • Post: 217
  • Karma: +0/-0
Re:Lookup e campi stringa [Risolto]
« Risposta #9 il: Dicembre 11, 2017, 02:48:32 pm »
Ho provato ad installare uno dei componeti associati al report di lazarus e ... puntualmente il sistema è andato in crash, , ho dovuto disinstallare e reinstallare , mancava una routine grafica .

Appunto, con una opportuna documentazione magari non sarebbe successo.

In generale la documentazioen è il punto debole dei software; se i vecchi cari centri di calcolo  , con il vax e il fortrarn,  avevano tanto di manuali ,  così come i primi pc olivetti e i primi compliatori su essi presenti, questa buona abitudine con il tempo è andata via via scemando .

Ad un incontro con il rappresentate di una software house mi sono lamentato della carenza di documentazione di un gestionale, ma lui ha semplicemente glissato .

Dovremmo un po' tutti scrivere qualcosa in piu' su cosa fanno i software altrimento vale la ben nota legge "per incasinare tutto ci vuole un computer".
 

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 3249
  • Karma: +12/-0
Re:Lookup e campi stringa [Risolto]
« Risposta #10 il: Dicembre 11, 2017, 02:50:36 pm »
Avogadro, sono pienamente concorde con te. Resta il fatto che spesso i software open source (come lazarus fanno il  ragionamento: già il software è gratis, già puoi leggere come è stato fatto, a costo zero non mi metto anche a scriverti la documentazione). Hai guardato la mini guida che ti ho indicato su LazReport?
Ieri è passato, domani è futuro, oggi è un dono...

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2382
  • Karma: +10/-0
Re:Lookup e campi stringa [Risolto]
« Risposta #11 il: Dicembre 11, 2017, 03:10:44 pm »
La documentazione scritta dagli "analisti programmatori"?
Spero non arrivi mai quel flagello.
La documentazione dovrebbe essere scritta da chi non capisce un'acca della programmazione.
I migliori analisti e scrittori di documentazione che ho incontrato non capivano un accidenti di progammazione. Ma sapevano mettersi nei panni di chi avrebbe dovuto usare l'applicativo. Un altro utente che non capiva un acca di programmazione.

Ti immagini un manuale utente che inizia a parlare di fork e join dei processi per fare una cavolo di stampa :)

Oggigiorno si sono invertite le fasi. Si parte da un'idea e si inizia a scrivere il codice. L'analisi e la progettazione (da qui nascono la documentazione) sono sacrificate pensando che il programmatore (penso a sistemi automatici tipo javadoc/pasdoc) possa pensare all'algoritmo e alla documentazione. Morale. O non si scrive proprio o diventa altamente inutile. ;) Basta leggere il codice :p

Senza andare troppo indietro nel tempo, il buon vecchio manuale del Turbo Pascal? Lo ricordate ;)
Gli esempi funzionavano :)

Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

Avogadro

  • Full Member
  • ***
  • Post: 217
  • Karma: +0/-0
Re:Lookup e campi stringa [Risolto]
« Risposta #12 il: Dicembre 12, 2017, 12:26:57 am »
"Avogadro, sono pienamente concorde con te. Resta il fatto che spesso i software open source (come lazarus fanno il  ragionamento: già il software è gratis, già puoi leggere come è stato fatto, a costo zero non mi metto anche a scriverti la documentazione). "


Anche questo è vero.
Personalmente all' inizio acquistavo le varie versionidi Delphi (ero arrivato alla 5) , ma  poi sia i prezzi sono saliti, sia vi sono state tutta una serie di cambiamenti per cui oggi delphi vola molto in alto (sia come prezzi sia come prestazioni sia come complessità) ; ho ripiegato così su lazarus che appunto is freeware con annessi e connessi.

"Hai guardato la mini guida che ti ho indicato su LazReport?"

La consocevo già, come conoscevo già tante altre pagine web su lazaius (n e ho anche indicate alcune su questo sito) .

Ad esempio, quella su come interfacciare le banche dati sql è stata una delle prime pagienweb cose con cui mi ci sono cimentato; ricordo che  avevo fatto una base di dati per un reagentario in acces e vi accedevo via obdc ed varie query in sql ; il software funziona ancora oggi a  meraviglia ; l' unico guaio è stato che ad un certo punto le versioni successive di lazarus, non ho mai capito perché, non gestivano piu' correttamente l' obdc;  mandai dei post sulla pagina dei bug di lazarus e mi pare che l' abbiano risolto; in ogni caso , a scanso di equivoci poi passai ad sqlite, che permette di fare applicativi che stanno su una chiavetta  senza passare dalle forche caduine di settare l' odbc (cosa  che con le nuove versioni di winodws è sempre piu' un casino).

Saludos .
« Ultima modifica: Dicembre 12, 2017, 12:41:00 am da Avogadro »

Avogadro

  • Full Member
  • ***
  • Post: 217
  • Karma: +0/-0
Re:Lookup e campi stringa [Risolto]
« Risposta #13 il: Dicembre 12, 2017, 12:29:56 am »
La documentazione scritta dagli "analisti programmatori"?
Spero non arrivi mai quel flagello.
La documentazione dovrebbe essere scritta da chi non capisce un'acca della programmazione.
I migliori analisti e scrittori di documentazione che ho incontrato non capivano un accidenti di progammazione. Ma sapevano mettersi nei panni di chi avrebbe dovuto usare l'applicativo. Un altro utente che non capiva un acca di programmazione.

Ti immagini un manuale utente che inizia a parlare di fork e join dei processi per fare una cavolo di stampa :)

Oggigiorno si sono invertite le fasi. Si parte da un'idea e si inizia a scrivere il codice. L'analisi e la progettazione (da qui nascono la documentazione) sono sacrificate pensando che il programmatore (penso a sistemi automatici tipo javadoc/pasdoc) possa pensare all'algoritmo e alla documentazione. Morale. O non si scrive proprio o diventa altamente inutile. ;) Basta leggere il codice :p

Senza andare troppo indietro nel tempo, il buon vecchio manuale del Turbo Pascal? Lo ricordate ;)
Gli esempi funzionavano :)

Concordo.

Una delle prime cose che bisogan tener presente è che si corre il rischio di finire in questa situazione qui *

https://i2.wp.com/tamingdata.com/wp-content/uploads/2010/07/tree-swing-project-management-large.png

Sembra ironia ?

Ho a che fare con un gestionale che a detta di tutti è la reificazione di questa striscia satirica.

La parte sull' help desk l'ho vissuta stamane con gli utenti incavolati per la risposta dell' help desk ("non si puo' fare" ) a una richiesta risolvibilissima con una query.

Tempo fa feci una richiesta all' help desk per una semplice cartella condivisa , mi hanno dato una specie di forum , ma io volevo solo condivire due file word con dei colleghi, non fare un blog sui massimi sistemi .

In questo paese ci sono problemi seri di comunicazione tra le persone .

*
Questa dovrebbe essere la prima versione (apparsa su una rivista all' inizio degli anni 80)

http://2.bp.blogspot.com/-ZJFelH1EEdM/TB-_ALTYI5I/AAAAAAAAAB0/JWadOyyiSKg/s320/Tire_Swing.gif

Aggiornamento

https://amalgamated-contemplation.com/2011/02/13/the-project-management-tree-swing-cartoon-past-and-present/






« Ultima modifica: Dicembre 12, 2017, 04:50:04 am da Avogadro »

 

Recenti

How To

Utenti
  • Utenti in totale: 785
  • Latest: gmax
Stats
  • Post in totale: 18771
  • Topic in totale: 2233
  • Online Today: 417
  • Online Ever: 900
  • (Gennaio 21, 2020, 08:17:49 pm)
Utenti Online
Users: 0
Guests: 397
Total: 397

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.