* * * *

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.
Novembre 24, 2024, 08:49:48 am

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

66 Visitatori, 0 Utenti

Autore Topic: [Risolto ]Problema con locate del tsqlquery  (Letto 9781 volte)

nicola.nicoletti

  • Newbie
  • *
  • Post: 10
  • Karma: +0/-0
[Risolto ]Problema con locate del tsqlquery
« il: Febbraio 04, 2013, 01:15:58 pm »
Ciao Ragazzi
Io uso lazarus 1.04 , fpc 2.6 su piattaforma intel con windows xp.
Ho fatto una applicazione che copia in memoria una tabella sqlite e cerca di dati utilizzando la locate su tsqlquery.
Purtroppo la mia applicazione trova la riga sbagliate nel db, quelle che iniziano per la stringa anche se non uso la opzione loPartialKey

ho allegato il db sqlite .
Invece una unit di test come esempio è

unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, sqlite3conn, sqldb, db, FileUtil, Forms, Controls,
  Graphics, Dialogs, DBGrids, StdCtrls, DbCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    Datasource1: TDatasource;
    DBGrid1: TDBGrid;
    DBNavigator1: TDBNavigator;
    SQLite3Connection1: TSQLite3Connection;
    SQLQuery1: TSQLQuery;
    SQLTransaction1: TSQLTransaction;
    procedure Button1Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
begin

  SQLQuery1.Locate('cod_age','FA0160',[]);

 ShowMessage(IntToStr(SQLQuery1.RecNo));

end;

end.


L'applicazione di prova ritorna 21 ma la corretta è 823

Qualcuno può darmi una mano
grazie


« Ultima modifica: Febbraio 04, 2013, 05:00:34 pm da nicola.nicoletti »

nicola.nicoletti

  • Newbie
  • *
  • Post: 10
  • Karma: +0/-0
Re:Problema con locate del tsqlquery
« Risposta #1 il: Febbraio 04, 2013, 02:07:40 pm »
ho sherato tutta la applicazione via drop box

https://dl.dropbox.com/u/64726031/test%20sqlite.zip

se vi può essere utile

nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2921
  • Karma: +20/-4
Re:Problema con locate del tsqlquery
« Risposta #2 il: Febbraio 04, 2013, 03:18:34 pm »
ciao nicola
volevo chiederti di fare una prova:
il metodo Locate è in realtà una funzione quindi dovresti scrivere:
Codice: [Seleziona]
if  SQLQuery1.Locate('cod_age','FA0160',[]) then
   ShowMessage(IntToStr(SQLQuery1.RecNo))
else
   ShowMessage('not found!');

credo infatti che più che di chiave parziale si tratti di chiave non trovata.
Facci sapere.

Poi un altro consiglio ;)
Locate in realtà non esegue solo una ricerca ma: sposta il cursore del dataset, valorizza tutti i campi persistenti e ricalcola quelli calcolati.
Nei dataset con pochi record e pochi campi calcolati non si percepisce (in termini di tempo) alcun ritardo ma se ci sono molti record e/o molti campi calcolati il programma ne potrebbe risentire pesantemente.
Se non si necessita dello spostamento del cursore e di tutto quello che ne consegue il consiglio è quello di usare Lookup che: dopo aver cercato la chiave, ritorna esclusivamente i campi di cui hai bisogno senza spostare il cursore.
Imagination is more important than knowledge (A.Einstein)

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 3276
  • Karma: +12/-0
Re:Problema con locate del tsqlquery
« Risposta #3 il: Febbraio 04, 2013, 03:21:39 pm »
ciao nicola
volevo chiederti di fare una prova:
il metodo Locate è in realtà una funzione quindi dovresti scrivere:
Codice: [Seleziona]
if  SQLQuery1.Locate('cod_age','FA0160',[]) then
   ShowMessage(IntToStr(SQLQuery1.RecNo))
else
   ShowMessage('not found!');

credo infatti che più che di chiave parziale si tratti di chiave non trovata.
Facci sapere.

Poi un altro consiglio ;)
Locate in realtà non esegue solo una ricerca ma: sposta il cursore del dataset, valorizza tutti i campi persistenti e ricalcola quelli calcolati.
Nei dataset con pochi record e pochi campi calcolati non si percepisce (in termini di tempo) alcun ritardo ma se ci sono molti record e/o molti campi calcolati il programma ne potrebbe risentire pesantemente.
Se non si necessita dello spostamento del cursore e di tutto quello che ne consegue il consiglio è quello di usare Lookup che: dopo aver cercato la chiave, ritorna esclusivamente i campi di cui hai bisogno senza spostare il cursore.

Nomore mi hai anticipato di alcuni minuti.
Ieri è passato, domani è futuro, oggi è un dono...

nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2921
  • Karma: +20/-4
Re:Problema con locate del tsqlquery
« Risposta #4 il: Febbraio 04, 2013, 03:24:37 pm »
Nomore mi hai anticipato di alcuni minuti.

oggi sono già a 4 caffè.... :D
Imagination is more important than knowledge (A.Einstein)

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 3276
  • Karma: +12/-0
Re:Problema con locate del tsqlquery
« Risposta #5 il: Febbraio 04, 2013, 03:27:08 pm »
Nomore mi hai anticipato di alcuni minuti.

oggi sono già a 4 caffè.... :D
Hahahahaha
Ieri è passato, domani è futuro, oggi è un dono...

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2389
  • Karma: +10/-0
Re:Problema con locate del tsqlquery
« Risposta #6 il: Febbraio 04, 2013, 04:12:46 pm »
Cribbio ... ma voi dove siete?
I post segnano le 5 ... e io ho l'orologio alle 4 ... cavolo ... ritorno al futuro O.o
Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 3276
  • Karma: +12/-0
Re:Problema con locate del tsqlquery
« Risposta #7 il: Febbraio 04, 2013, 04:15:16 pm »
Cribbio ... ma voi dove siete?
I post segnano le 5 ... e io ho l'orologio alle 4 ... cavolo ... ritorno al futuro O.o

a me segna le 3 nei miei vecchi post
Ieri è passato, domani è futuro, oggi è un dono...

nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2921
  • Karma: +20/-4
Re:Problema con locate del tsqlquery
« Risposta #8 il: Febbraio 04, 2013, 04:19:07 pm »
Cribbio ... ma voi dove siete?
I post segnano le 5 ... e io ho l'orologio alle 4 ... cavolo ... ritorno al futuro O.o

a me segna le 3 nei miei vecchi post

pure a me: 3 pm
Imagination is more important than knowledge (A.Einstein)

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2389
  • Karma: +10/-0
Re:Problema con locate del tsqlquery
« Risposta #9 il: Febbraio 04, 2013, 04:53:53 pm »
 nomorelogic

    Global Moderator
    Hero Member
    *****
 Re:Problema con locate del tsqlquery
« Risposta #8 il: Oggi alle 06:19:07 pm »

Fò copia e incolla..
Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2921
  • Karma: +20/-4
Re:Problema con locate del tsqlquery
« Risposta #10 il: Febbraio 04, 2013, 04:57:56 pm »
nomorelogic

    Global Moderator
    Hero Member
    *****
    Post: 635

Re:Problema con locate del tsqlquery
« Risposta #8 il: Oggi alle 04:19:07 pm »


questo è il mio copia/incolla


Edit:
ma che sei in vpn con Cipro? :D
Imagination is more important than knowledge (A.Einstein)

nicola.nicoletti

  • Newbie
  • *
  • Post: 10
  • Karma: +0/-0
[Solved] Re:Problema con locate del tsqlquery
« Risposta #11 il: Febbraio 04, 2013, 04:59:15 pm »
E' stato risolto
Il problema sta nel fatto che quando ho dichiarato nel sqlite il cod_age , su cui faccio la ricerca , come una char(5) poi quando ho caricato il db era un char(6) ,  sqlite lite (managgia a lui )  me lo ha fatto caricare.
Quindi cambiando la lunghezza di uno ora funziona.

nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2921
  • Karma: +20/-4
Re:[Solved] Re:Problema con locate del tsqlquery
« Risposta #12 il: Febbraio 04, 2013, 05:02:52 pm »
Il problema sta nel fatto che quando ho dichiarato nel sqlite il cod_age , su cui faccio la ricerca , come una char(5) poi quando ho caricato il db era un char(6) ,  sqlite lite (managgia a lui )  me lo ha fatto caricare.

i char quando posso li evito...
ogni volta che ci ho a che fare c'è sempre un problema di trim che mi fa perdere tempo :)
vai di varchar ;)
Imagination is more important than knowledge (A.Einstein)

 

Recenti

How To

Utenti
  • Utenti in totale: 803
  • Latest: maXim.FI
Stats
  • Post in totale: 19180
  • Topic in totale: 2288
  • Online Today: 97
  • Online Ever: 900
  • (Gennaio 21, 2020, 08:17:49 pm)
Utenti Online
Users: 0
Guests: 66
Total: 66

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.