Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,326

    delphi - Interbase - Indici Tabelle

    salve,

    ho creato il mio database Interbase, e in esso 1 tabella e 2 indici:

    CREATE TABLE "TABELLA_NOMI"
    (
    "CODICE" CHAR(8),
    "NOME" CHAR(40),
    "INDI" CHAR(40)
    );

    /* Index definitions for all user tables */

    CREATE UNIQUE INDEX "INDICE_CODICE" ON "TABELLA_NOMI"("CODICE");
    CREATE UNIQUE INDEX "INDICE_NOME" ON "TABELLA_NOMI"("NOME", "CODICE");

    ho inserito anke dei dati nella tabella x fare delle prove, ma tali dati non vengono visualizzati nell'ordine dei file indice.

    cosa devo settare x visualizzare la tabella secondo l'ordine del primo indice? ....e per visualizzarla nell'ordine del secondo indice?

    in delphi, invece, devo definire qualcosa nella proprieta indexdefs dell'oggetto IBtable?

    grazie

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Devi sempre tenere a mente che non stiamo parlando di un database di tipo "desktop", ma di un database client/server.

    La creazione di indici lato server permette di velocizzare il reperimento di dati dalla tabella in modo ordinato; l'ordinamento si effettua usando una query SQL con la clausola ORDER BY.

    Quando si ottengono record da una tabella ordinandoli tramite ORDER BY, InterBase verifica se è presente un indice sulla tabella relativo ai campi coinvolti nell'ordinamento; se tale indice è presente nella struttura, allora viene sfruttato per ottenere i dati ordinati più rapidamente.

    Va detto che il componente IBTable è funzionale per chi proviene dal BDE poichè ha un comportamento simile a quello della tradizionale TTable; tuttavia, lavorando con un database server SQL, è meglio avvalersi di componenti più specifici in grado di consentire l'inserimento di statement SQL per la selezione, l'aggiornamento e l'eliminazione dei dati, come il TIBDataSet.

    Prova a dare un'occhiata a questo componente, consultando la Guida in linea. Il componente ti permette di scrivere, all'interno delle proprietà fornite, gli statement SQL necessari alla selezione di record (con relativo ordinamento, se richiesto), all'aggiornamento e all'eliminazione di dati, figurando a tutti gli effetti e comportandosi come una normale tabella.

    Se vuoi compiere operazioni più complesse lato client come filtraggio e ordinamenti di record presenti in memoria (e non sul server), puoi documentarti sul componente TClientDataSet; questo componente nasconde una grande potenza: ti permette di scaricare dati da un DataSet qualunque (tabella, query...) in memoria, definire indici (sempre in memoria) selezionabili per ordinare i dati in diversi modi ed eventualmente filtrarli.
    Quando modifichi i dati contenuti nel ClientDataSet attraverso Data Control ad esso associati e desideri salvare le modifiche apportate (anche in blocco), il componente ClientDataSet è in grado di generare autonomamente gli script SQL necessari (sui quali è comunque possibile intervenire) per aggiornare la base dati sul database server.

    Purtroppo, la documentazione a mio avviso più interessante sul ClientDataSet è in inglese, e sapendo che non ti piace molto...

    Puoi comunque dare un'occhiata agli articoli di Cary Jensen sul sito della Community di Borland relativi al ClientDataSet.

    Per quanto riguarda InterBase, se non vuoi faticare troppo con IB Console, che è un tool interessante ma abbastanza scarno, scarica la versione Personal di IB Expert.

    Come vedi, la trattazione dei database è piuttosto ampia ed è impossibile, almeno per me, scrivere tutto in questo spazio, per motivi sia pratici sia di tempo.

    Cerca di aiutarti con i riferimenti e le imbeccate che ti ho dato.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,326
    con l'esempio che ho fatto, l'inserimento della dbnavigator che agisce sulla IBtabella_nome, non posso scorrere la mia tabella ordinata a secondo dell'indice che voglio e che gia esiste su server????


    non capisco cosa scaricarmi da ib expert....."IB Expert Free Personal Edition" mi linca in questa pagina:

    http://www.hksoftware.net/download/

    devo scaricare tutte queste cose?

    ovviamente questo e' un software che mi aiutera nella creazione dei database, delle tabelle, degli indici.....giusto?


    grazie

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da 123delphi321
    con l'esempio che ho fatto, l'inserimento della dbnavigator che agisce sulla IBtabella_nome, non posso scorrere la mia tabella ordinata a secondo dell'indice che voglio e che gia esiste su server????
    La risposta è semplice: no.

    Ed è anche logico poichè hai la possibilità di definire più indici, quindi non è possibile sceglierlo in automatico, e soprattutto non si può imporre ogni indice per tutti gli utenti che accedono al database.

    Gli indici forniscono il servizio di indicizzazione dei dati come specificato nella struttura, cioè possono essere sfruttati per ordinare più velocemente i dati...ma è necessario chiedere al DB come ordinarli in modo esplicito, eseguendo la query SQL. Se l'ordinamento previsto dalla query trova soddisfazione in uno degli indici creati, allora l'indice viene usato e la query è più veloce.

    Originariamente inviato da 123delphi321
    non capisco cosa scaricarmi da ib expert....."IB Expert Free Personal Edition" mi linca in questa pagina:

    http://www.hksoftware.net/download/

    devo scaricare tutte queste cose?

    ovviamente questo e' un software che mi aiutera nella creazione dei database, delle tabelle, degli indici.....giusto?
    grazie
    Esattamente. Il link diretto è:
    http://www.hksoftware.net/download/i....22.1_full.exe.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,326
    ma se io volessi semplicemente visualizzare la tabella nell'ordine dell'indice 1...cioe' ordinata in modo crescente x codice....come devo procedere?

    devo certamente inserire:

    IBdatabase
    IBtransaction
    IBtable

    e poi?

    io attualmente ho un Datasource a cui e' collegato il dbnavigator, am suppongo che devo inserire un altro oggetto che mi faccia prendere in esame la mia tabella ordinata a secondo dell'indice....

    tu prima hai accennato a IBClientDataset, lo sto gurdando ed ho visto che quest'oggetto puo essere anke selezionato nella dbnavigator. ma non riesco a farlo funzionare....


    help xfavore! grazie

    ps. mi e' arrivato il libro. tutto ok. sembra semplice (almeno x me che ne so poco...)

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da 123delphi321
    ma se io volessi semplicemente visualizzare la tabella nell'ordine dell'indice 1...cioe' ordinata in modo crescente x codice....come devo procedere?
    Devi ottenere l'ordinamento desiderato usando uno statement SQL SELECT che puoi eseguire attraverso il componente TIBQuery. Il componente esegue la query e restituisce una tabella di sola lettura. Se vuoi modificare i dati, puoi aggiungere un componente TIBUpdateSQL (da associare alla query attraverso la proprietà UpdateObject): questo componente si occupa di fornire gli statement SQL necessari per riuscire ad aggiornare, inserire, eliminare e rinfrescare i dati della query, facendola funzionare come una normale tabella.

    Originariamente inviato da 123delphi321
    devo certamente inserire:

    IBdatabase
    IBtransaction
    IBtable

    e poi?
    Il componente TIBTable non è adatto a ciò che vuoi ottenere tu. Utilizza i componenti che ti ho indicato sopra.

    Originariamente inviato da 123delphi321
    io attualmente ho un Datasource a cui e' collegato il dbnavigator, am suppongo che devo inserire un altro oggetto che mi faccia prendere in esame la mia tabella ordinata a secondo dell'indice....
    L'ordinamento si ottiene tramite SQL, quindi lascia da parte il componente IBTable e prendi invece una coppia IBQuery + IBUpdateSQL oppure usa direttamente IBDataSet.

    Originariamente inviato da 123delphi321
    tu prima hai accennato a IBClientDataset, lo sto gurdando ed ho visto che quest'oggetto puo essere anke selezionato nella dbnavigator. ma non riesco a farlo funzionare....
    Io veramente ho accennato a IBDataSet, poi a TClientDataSet (che invece si trova nella pagina "Data Access" della Palette dei Componenti).

    Il componente TIBClientDataSet sembra essere un'unione dei due, ma non l'ho mai utilizzato.

    Originariamente inviato da 123delphi321
    ps. mi e' arrivato il libro. tutto ok. sembra semplice (almeno x me che ne so poco...)
    Già arrivato? Sono stati rapidi...
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,326
    scusa ma nn riesco a capire il funzionamento di TIBQuery.

    quindi....sulla form inserisco

    ibdatabase
    ibtransaction
    ibtable
    datasource

    a questo punto inserisco ibquery che associo al datasouce (che e' associato alla mia tabella IBtable),

    ma dove devo scrivere la queri x ottenere la mia tabella ordinata?

  8. #8
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da 123delphi321
    quindi....sulla form inserisco

    ibdatabase
    ibtransaction
    ibtable
    datasource

    a questo punto inserisco ibquery che associo al datasouce (che e' associato alla mia tabella IBtable),
    No, togli il componente IBTable e sostituiscilo con un IBQuery.

    Originariamente inviato da 123delphi321
    ma dove devo scrivere la queri x ottenere la mia tabella ordinata?
    Il componente IBQuery ha la proprietà SQL.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,326
    perfetto inserito ibquery ho scritto il codice sql...

    SELECT * from TABELLA_NOMI ORDER BY codice;

    tale query l'ho testata in IBconsole e visualizza la tabella giustamente ordinata.

    adesso per scorrere con dbnavigator..devo gollegare il componente dbnavigator ad un datasource,....e il datasource lo devo collegare al risultato della query....ovviamente questa e' la mia logica...cerco di capirne il funzionamente

    pero e' chiaro che sbaglio.

    il dbnavigator perforza deve essere collegato ad un datasousce, ma come faccio a collegare il risultato della query al datasource?

  10. #10
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da 123delphi321
    il dbnavigator perforza deve essere collegato ad un datasousce, ma come faccio a collegare il risultato della query al datasource?
    Colleghi semplicemente la proprietà DataSet del DataSource al componente IBQuery.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.