* * * *

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 21, 2025, 03:39:17 pm

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

179 Visitatori, 0 Utenti

Autore Topic: DBGrid - leggere un campo in modifica  (Letto 5721 volte)

antoniog

  • Scrittore
  • Sr. Member
  • *****
  • Post: 257
  • Karma: +0/-0
    • Informatica Utile
DBGrid - leggere un campo in modifica
« il: Novembre 01, 2015, 12:24:18 am »
ho una dbgrid, con 3 campi visibili, collegata ad una tabella sqlite tramite un dataset. vorrei utilizzare il primo campo alfanumerico lungo 8 caratteri: codice,  per fare una ricerca su un'altra tabella con immissione parziale del codice, per esempio:
- il campo codice esistente 1.02.001
- voglio cambiare questo codice facendo una ricerca su un'altra tabella per codice che iniziano per 2.01, scelto il record che mi serve lo memorizzo, ma non sò come catturare il campo di immissione.
nella griglia immetto nel campo codice: 2.01 e nell'evento "onColexit" metto le seguenti istruzioni:
if not PConti.Locate('chiave', CausCLConto.Text, []) then
        begin
         PConti.Locate('chiave', CausCLConto.Text, [loPartialKey]) ;
        ScorriContiF.ShowModal;
        memorCausCl;
        end
else ...........
ma nella ricerca mi restituisce sempre in ScorriContiF.ShowModal, come prima riga, il valore del campo memorizzato cioè: 1.02.001     mentre io vorrei che si posizionasse sulla prima riga che comincia con: 2.01     . come faccio a catturare il campo in immissione e non ancora memorizzato?
Grazie in anticipo per le risposte.
avrai solo la libertà che riuscirai a conquistarti e anche questa sarà incerta.

antoniog

  • Scrittore
  • Sr. Member
  • *****
  • Post: 257
  • Karma: +0/-0
    • Informatica Utile
Re:DBGrid - leggere un campo in modifica
« Risposta #1 il: Novembre 01, 2015, 11:59:19 am »
spiego meglio. in un campo DBEdit posso utilizzare DBEdit.Text per fare una ricerca con Locate senza utilizzare il campo della tabella collegata, volevo sapere se i campi DBGrid hanno una proprietà text da utilizzare per lo stesso scopo.
avrai solo la libertà che riuscirai a conquistarti e anche questa sarà incerta.

nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2984
  • Karma: +20/-4
Re:DBGrid - leggere un campo in modifica
« Risposta #2 il: Novembre 01, 2015, 08:51:53 pm »
solitamente nella griglia il record corrente è lo stesso nel dataset; non hai bisogno di leggere dalla griglia: usa direttamente il campo del dataset.
Imagination is more important than knowledge (A.Einstein)

antoniog

  • Scrittore
  • Sr. Member
  • *****
  • Post: 257
  • Karma: +0/-0
    • Informatica Utile
Re:DBGrid - leggere un campo in modifica
« Risposta #3 il: Novembre 01, 2015, 09:12:21 pm »
se uso dataset leggo il campo nel record della tabella ma io vorrei leggere quello che ho immesso nella cella della dbgrid per fare una ricerca.
una cosa così semplice sembra impossibile:
immetto un un valore, stringa o numero, in una cella della dbgrid, lo vedo ma non riesco ad utilizzarlo!?
avrai solo la libertà che riuscirai a conquistarti e anche questa sarà incerta.

nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2984
  • Karma: +20/-4
Re:DBGrid - leggere un campo in modifica
« Risposta #4 il: Novembre 01, 2015, 11:37:55 pm »
non l'ho mai provato con lazarus ma credo tu possa usare un campo DbLookupComboBox

ho trovato questo thread, forse ti può essere utile
http://forum.lazarus.freepascal.org/index.php?topic=17023.0
Imagination is more important than knowledge (A.Einstein)

antoniog

  • Scrittore
  • Sr. Member
  • *****
  • Post: 257
  • Karma: +0/-0
    • Informatica Utile
Re:DBGrid - leggere un campo in modifica
« Risposta #5 il: Novembre 02, 2015, 11:34:28 am »
grazie. provo
avrai solo la libertà che riuscirai a conquistarti e anche questa sarà incerta.

antoniog

  • Scrittore
  • Sr. Member
  • *****
  • Post: 257
  • Karma: +0/-0
    • Informatica Utile
Re:DBGrid - leggere un campo in modifica
« Risposta #6 il: Novembre 02, 2015, 12:54:44 pm »
Ho capito il funzionamento di combobox ma non è quello che cerco. ho bisogno di un campo di immissione, TEdit, TDBEdit o altro, che mi consenta di immettere un dato da ricercare in una tabella, posso mettere un campo di immissione esterno alla DBGrid, così funziona, ma è poco elegante.
avrei bisogno di una  alternativa a : DBGrid1.SelectedField.Text con DBGrid1.SelectedCell.Text che non ho trovato.
avrai solo la libertà che riuscirai a conquistarti e anche questa sarà incerta.

antoniog

  • Scrittore
  • Sr. Member
  • *****
  • Post: 257
  • Karma: +0/-0
    • Informatica Utile
Re:DBGrid - leggere un campo in modifica (RISOLTO)
« Risposta #7 il: Novembre 04, 2015, 02:00:23 pm »
Ho risolto il problema, dopo varie ricerche sul web, adattando un esempio trovato, che non centrava nulla con quello che volevo, che mi ha dato l'intuizione per trovare la soluzione.
Ho inserito nella form un TEdit con la proprietà visible = False e sul campo da ricercare su un'altra tabella, nel mio caso CONTO, ho inserito negli EVENTI in -OnSetText-  il codice che cattura quanto inserito nel campo CONTO dopo avere premuto INVIO dalla tastiera e lo memorizza su -Edit1.Text- dopo di che faccio la ricerca con LOCATE su un'altra tabella e se mi va bene lo memorizzo.
Listato allegato

Codice: [Seleziona]

unit PrGridp;


{$mode objfpc}{$H+}


interface


uses
  LCLIntf, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, DBCtrls, ExtCtrls, DBGrids, DB, dbf, Sqlite3DS, FileUtil,
  ZConnection, ZDataset, LResources;




type


  { TProvaDBgrid }


  TProvaDBgrid = class(TForm)
    Datasource1: TDatasource;
    Datasource2: TDatasource;
    Datasource3: TDatasource;
    DBGrid1: TDBGrid;
    DBGrid2: TDBGrid;
    DBGrid3: TDBGrid;
    DBNavigator1: TDBNavigator;
    Edit1: TEdit;
    ZConnection1: TZConnection;
    ZTable1: TZTable;
    ZTable1CODCAUSALE: TLongintField;
    ZTable1CONTO: TStringField;
    ZTable1DAREAVERE: TStringField;
    ZTable1DESCRIZION: TStringField;
    ZTable2: TZTable;
    ZTable3: TZTable;
    ZTable3AVERPARTIT: TFloatField;
    ZTable3AVERPERIOD: TFloatField;
    ZTable3AVERPROGRE: TFloatField;
    ZTable3CHIAVE: TStringField;
    ZTable3CHIAVECEE: TStringField;
    ZTable3CONTO: TStringField;
    ZTable3CONTOCEE: TStringField;
    ZTable3DAREPARTIT: TFloatField;
    ZTable3DAREPERIOD: TFloatField;
    ZTable3DAREPROGRE: TFloatField;
    ZTable3DESCRICEE: TStringField;
    ZTable3DESCRIZIO: TStringField;
    ZTable3GRUPPO: TStringField;
    ZTable3IDBILANCIO: TLongintField;
    ZTable3INDANALBIL: TStringField;
    ZTable3PUNT1PRIMA: TLongintField;
    ZTable3PUNT2PRIMA: TLongintField;
    ZTable3SOTTOCONTO: TStringField;
    procedure DBGrid1EditButtonClick(Sender: TObject);
    procedure DBGrid1EditingDone(Sender: TObject);
    procedure ZTable1CONTOSetText(Sender: TField; const aText: string);




  private
    { private declarations }
  public
    { public declarations }
  var
  campo: string;
  end;
 procedure memorizza;


var
  ProvaDBgrid: TProvaDBgrid;


implementation


{$R *.lfm}
uses
  strutils, ContP;


{ TProvaDBgrid }


procedure TProvaDBgrid.DBGrid1EditButtonClick(Sender: TObject);
begin
  memorizza;
end;


procedure TProvaDBgrid.DBGrid1EditingDone(Sender: TObject);
begin
    memorizza;
end;


procedure TProvaDBgrid.ZTable1CONTOSetText(Sender: TField; const aText: string);
begin
  Sender.AsString := aText;
  campo:=Sender.AsString;
  Edit1.Text:= Sender.AsString;
  ZTable3.Locate('Chiave', Edit1.Text,[loPartialKey]);
end;


procedure memorizza;
begin
 try
  with    ProvaDBgrid do
   begin
    if not ZTable3.Locate('Chiave', Edit1.Text,[]) then
       begin
        ZTable3.Locate('Chiave', Edit1.Text,[loPartialKey]);
        ContF.Showmodal;
       end;
  if MessageDLG('Memorizzo i dati?',mtInformation,[mbOk, mbNo],0)= mrOk then
    begin
      if not (ZTable1.State=dsEdit) or not (ZTable1.State=dsInsert)  then
        begin
         ZTable1.Edit;
         ZTable1Conto.Text:=ZTable3Chiave.Text;
         ZTable1Descrizion.Text:=ZTable3Descrizio.Text;
         ZTable1.Refresh;
        end;
    end
    else
      ZTable1.Cancel;
   end;
 except
         on E: Exception do
      MessageDLG(E.Message+'......errore',mtInformation,[mbOk],0);
 end;
end;


end.
« Ultima modifica: Novembre 05, 2015, 05:32:43 pm da Legolas »
avrai solo la libertà che riuscirai a conquistarti e anche questa sarà incerta.

antoniog

  • Scrittore
  • Sr. Member
  • *****
  • Post: 257
  • Karma: +0/-0
    • Informatica Utile
Re:DBGrid - leggere un campo in modifica
« Risposta #8 il: Novembre 04, 2015, 02:03:55 pm »
chiedo venia ho invertito codice e testo  :)
avrai solo la libertà che riuscirai a conquistarti e anche questa sarà incerta.

Legolas

  • Global Moderator
  • Sr. Member
  • *****
  • Post: 366
  • Karma: +3/-0
Re:DBGrid - leggere un campo in modifica
« Risposta #9 il: Novembre 05, 2015, 05:33:07 pm »
chiedo venia ho invertito codice e testo  :)

Ho messo a posto ;)

antoniog

  • Scrittore
  • Sr. Member
  • *****
  • Post: 257
  • Karma: +0/-0
    • Informatica Utile
Re:DBGrid - leggere un campo in modifica
« Risposta #10 il: Novembre 05, 2015, 07:34:52 pm »
grazie  :D
avrai solo la libertà che riuscirai a conquistarti e anche questa sarà incerta.

 

Recenti

How To

Utenti
  • Utenti in totale: 817
  • Latest: alex6891
Stats
  • Post in totale: 19692
  • Topic in totale: 2366
  • Online Today: 200
  • Online Ever: 900
  • (Gennaio 21, 2020, 08:17:49 pm)
Utenti Online
Users: 0
Guests: 179
Total: 179

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.