* * * *

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, 02:52:34 am

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

399 Visitatori, 0 Utenti

Autore Topic: Dbf  (Letto 18724 volte)

bonmario

  • Hero Member
  • *****
  • Post: 1300
  • Karma: +10/-1
Re:Dbf
« Risposta #15 il: Gennaio 30, 2012, 08:43:15 pm »

Ho creato un dbf con un campo 'data' e con un campo 'nome' con cdbfexplorer.
Tramite programma posso inserire varie date e nomi, ma come si fa a metterle in serie cronologica in base alla data?
esempio
   06/01/2012    mario
   15/01/2012   gino
   20/01/2012   luigi
   20/01/2012   mario
   22/01/2012   enzo

e non, come rimane a me,
   06/01/201   mario
   15/01/2012   gino
   20/01/2012   luigi
   22/01/2012   enzo
   20/01/2012   mario

Ho provato a seguire il tutorial mettendo l'addindex, ma non ci son riuscito.

Ciao,
vedendo il tu output, probabilmente hai dichiarato il campo "data" di tipo stringa, invece devi dichiararlo di tipo ftDate o, al massimo ftDateTime se vuoi anche l'ora.

Per il resto ti rimando al tutorial che ti è già stato consigliato: http://wiki.lazarus.freepascal.org/Lazarus_Tdbf_Tutorial quando ho usato i TDBF per la prima volta qualche anno fa, mi è servito molto.

Dai anche un'occhiata a questo che è molto più completo: http://www.podgoretsky.com/ftp/docs/DB/tdbf.pdf

Ciao, Mario

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 3249
  • Karma: +12/-0
Re:Dbf
« Risposta #16 il: Gennaio 31, 2012, 08:32:47 am »
Ho seguito questo esempio qui:

MyDbf.AddIndex('custid', 'Id', [ixPrimary, ixUnique]);
MyDbf.AddIndex('custname','Name', [ixCaseInsensitive]);
MyDbf.Close;

ma non funge...oppure riporta errore e non è detto che c'entri qualcosa con quello che voglio io ehh :).

Era un tentativo.
Ho provato con Mysql( che sembra essere tipo Database desktop di delphi)
e c'è un comando "Sorttable" ...pensavo si potesse utilizzare anche tramite codice,ma non ci riesco.
Sqllite può ordinarmi le date come le voglio io?

Si Sqlite si, ma anche gli altri database da te menzionati. Basta che nella query che usi per visualizzare i dati usi la dicitura ORDER BY NomeCampo ASC (per un ordinamento crescente, DESC per quello decrescente).
Ieri è passato, domani è futuro, oggi è un dono...

faxius

  • Newbie
  • *
  • Post: 22
  • Karma: +0/-0
Re:Dbf
« Risposta #17 il: Febbraio 01, 2012, 06:54:51 pm »
x bonmario: il campo "data" è ftDate però x essere primario accetta solo integer e string.

utile il manuale tdbf

x xinyiman: proverò ad usare sqlite anche se non lo conosco....farò tentativi


xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 3249
  • Karma: +12/-0
Re:Dbf
« Risposta #18 il: Febbraio 01, 2012, 07:11:28 pm »
guarda, sqlite ti darà tante soddisfazioni :)
Ieri è passato, domani è futuro, oggi è un dono...

faxius

  • Newbie
  • *
  • Post: 22
  • Karma: +0/-0
Problema con packtable su dbf
« Risposta #19 il: Febbraio 24, 2012, 08:44:44 am »
Packtable con dbf

Se elimino un record da un dbf questo non viene fisicamente cancellato e fin qui ok.
Ho seguito la procedura di packtable riportata sul tutorial del tdbf e questa funziona solo se il componente del dataset ha impostato dbf1.active:=false fin dall'inizio. Se invece è true e lo cambio da programma si blocca e dice che non può aprire il database. Per far capire meglio allego un esempio con il tutto da inserire in c:\temp.
grazie a chi vorrà aiutarmi.
Faxius

bonmario

  • Hero Member
  • *****
  • Post: 1300
  • Karma: +10/-1
Re:Dbf
« Risposta #20 il: Febbraio 24, 2012, 10:30:55 am »
Ho un solo progetto che usa i TDBF e che non tocco da anni. Dopo varie prove ed errori, mi ero fatto una procedura per compattare i DBF senza avere errori. Eccola:

Codice: [Seleziona]
  procedure CompattaDB(var MyDbf:TDbf);
  begin
    //Chiusura preventiva
    MyDbf.Close;
   
    //Apro il file im modalità  esclusiva e lo riorganizzo
    MyDbf.Exclusive:=True;
    MyDbf.Open;
    MyDbf.PackTable;
    MyDbf.RegenerateIndexes;
    MyDbf.Close;
    MyDbf.Exclusive:=False;
  end;

Ciao, Mario

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 3249
  • Karma: +12/-0
Re:Dbf
« Risposta #21 il: Febbraio 24, 2012, 11:20:27 am »
Io nell'unico programma (vecchio) in cui usavo i dbf usavo questo codice prima di uscire dal programma

Codice: [Seleziona]
     Dbf_Appoggio.TableLevel := 7;
     Dbf_Appoggio.TableName := 'file.dbf';
     Dbf_Appoggio.Exclusive := True;
     Dbf_Appoggio.Open;
     Dbf_Appoggio.PackTable;
     Dbf_Appoggio.RegenerateIndexes;
     Dbf_Appoggio.Close;
     Dbf_Appoggio.Exclusive := False;
Ieri è passato, domani è futuro, oggi è un dono...

faxius

  • Newbie
  • *
  • Post: 22
  • Karma: +0/-0
Re:Dbf
« Risposta #22 il: Febbraio 26, 2012, 03:00:54 pm »
X bonmario: è la stessa sintassi che ho usato io e presa dal tutorial, ma si blocca e non riesce ad aprire il dbf.

X xinyiman: riporta che non puo operare su un database attivo. mettendo anche dbf1.active:= false , passa al primo errore che non può aprirre il database.

il file zippato dele mio esempio si vede?

bonmario

  • Hero Member
  • *****
  • Post: 1300
  • Karma: +10/-1
Re:Dbf
« Risposta #23 il: Febbraio 26, 2012, 06:39:04 pm »
Il file zippato l'ho visto. Ho provato ad eseguirlo il progetto su Linux. Lancio il programma e nella caption del form c'è 7 e mi fa vedere i 7 record. Clicco sul bottone e mi pulisce la tabella e mi mette nella caption del form 0.

P.S. Ho visto che hai usato le stesse istruzioni che ho usato io, ma l'ordine non è lo stesso.
Io mi ricordo che all'epoca ci ho messo un bel po' a far funzionare il tutto, quindi prova a metterle nell'ordine con cui le ho messe io e poi fammi sapere.

Ciao, Mario

faxius

  • Newbie
  • *
  • Post: 22
  • Karma: +0/-0
Re:Dbf
« Risposta #24 il: Febbraio 26, 2012, 11:44:12 pm »
Nella caption della form riporta 7 record ma da dbgrid ce ne sono 6 e non 7. il pulsante a me fa bloccare il tutto dicendo che non può aprire il database. io ho lazarus su win7 non so se può essere la causa perchè a me non pulisce la tabella e non riporta zero(poi perchè dovrebbe riportare zero?). Ho provato anche il tuo ordnine ma il risultato è lo stesso.

bonmario

  • Hero Member
  • *****
  • Post: 1300
  • Karma: +10/-1
Re:Dbf
« Risposta #25 il: Febbraio 27, 2012, 08:15:45 am »
Provato qui al lavoro su XP e da un errore di access violation quando fa la Open.
Non so che dire, anche perché lo stesso progetto su Linux 64 bit non da errori.
L'unica differenza rispetto a come lo uso io, è che nel mio progetto le aperture e chiusure del DB vengono fatte tutte a runtime quando serve a me e non all'apertura del progetto.

Ciao, Mario

faxius

  • Newbie
  • *
  • Post: 22
  • Karma: +0/-0
Re:Dbf
« Risposta #26 il: Febbraio 27, 2012, 04:50:13 pm »
quindi sembra essere un problema legato al SO che si usa......un altro modo x bypassare il problema ti sovviene? un modo x eliminare definitivament ei record cncellati, ma ancora presenti sul dbf?
ciao e grazie

bonmario

  • Hero Member
  • *****
  • Post: 1300
  • Karma: +10/-1
Re:Dbf
« Risposta #27 il: Febbraio 27, 2012, 08:40:11 pm »
Purtroppo in questi giorni ho poco tempo, altrimenti avrei fatto delle prove col tuo sorgente.
Potresti provare a non aprire il file in automatico, ma aprirlo dove ti serve.

Ciao, Mario

faxius

  • Newbie
  • *
  • Post: 22
  • Karma: +0/-0
Re:Dbf
« Risposta #28 il: Febbraio 28, 2012, 03:39:12 pm »
Già fatto ma non funge..anche con dbf.close prima del packtable....tsk tsk

bonmario

  • Hero Member
  • *****
  • Post: 1300
  • Karma: +10/-1
Re:Dbf
« Risposta #29 il: Febbraio 28, 2012, 06:38:18 pm »
Non capisco cosa non abbia il tuo programma.
Poco prima di uscire dal lavoro, ho trovato il progetto che allego a questo post tra i miei progetti di test. L'ho adattato in fretta prima di uscire.
Lancia il programma, clicca sul bottone "Importa". Lui crea una tabella con i numeri da 1 a 10 e cancella le righe relative ai numeri pari.
Fatto questo, clicca sul bottone "Compatta". Fa la compattazione senza dare errori, ma non so perché non rivisualizza il DB nella Grid.
Spero che ti possa servire ...

Ciao, Mario

 

Recenti

How To

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

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.