Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,275

    [DELPHI] Ottenere tabella a cui fa riferimento un campo

    Ciao a tutti,

    ...una tabella Firebird :

    codice:
    CREATE TABLE CLIENTI(
        ID                  INTEGER NOT NULL PRIMARY KEY,
        NOME                VARCHAR(100),
        .......
        IDCOMUNE            INTEGER REFERENCES COMUNI(ID),
        .......

    nel programma delphi ho un dataset con il campo IDCOMUNE.

    dataset.Fieldbyname('idcomune')

    come posso fare per capire il campo idcomune a quale tabella fa riferimento?

    grazie

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    23,904
    Quote Originariamente inviata da 123delphi321 Visualizza il messaggio
    come posso fare per capire il campo idcomune a quale tabella fa riferimento?
    La soluzione dipende dalla libreria di componenti che stai usando per l'accesso ai dati.

    In alcuni casi, viene fornita la possibilità di interrogare lo schema dei dati, ovvero di aprire tabelle i cui dati in realtà si riferiscono alla struttura del database piuttosto che ai suoi dati.

    Ad esempio, nei componenti dbGo for ADO si può usare il componente TADOConnection per ottenere il nome delle tabelle del database tramite chiamata al metodo GetTableNames().

    Se usi dbGo, prova a leggere questo articolo che contiene alcune spiegazioni ed esempi.

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

    Homepage | Blog | Delphi Podcast | Altri link...

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,275
    Ciao Marco Alka e grazie (come sempre) per la risposta.

    delphi 7
    Firebird 2.5

    io utilizzo i componenti della palette Interbase quindi Ibquery ibdataset..... cosi come mi insegnasti tu.

    eventualmente mi consigli componenti migliori da utilizzare?
    avevo dato uno sguardo a Unidac di devart, ma poi ho continuato con i componenti standard.

    mi puoi consigliare una soluzione?

    grazie

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    23,904
    Quote Originariamente inviata da 123delphi321 Visualizza il messaggio
    io utilizzo i componenti della palette Interbase quindi Ibquery ibdataset.....
    Direi allora che puoi recuperare informazioni lanciando delle normali query che vadano a ispezionare le tabelle di sistema oppure che estraggano le informazioni che ti interessano, leggendo la documentazione.

    Questo è un esempio che ho trovato in rete, ad esempio, per recuperare i campi delle tabelle e le relazioni:

    codice:
    select rf.rdb$relation_name as table_name, 
           rf.rdb$field_name as column_name,
           case f.rdb$field_type
             when 14 then 'CHAR'
             when 37 then 'VARCHAR'
             when 8 then 'INTEGER'
             ...
           end as data_type,
           f.rdb$field_length,
           f.rdb$field_scale
    from rdb$fields f
      join rdb$relation_fields rf on rf.rdb$field_source = f.rdb$field_name
    where rf.rdb$relation_name = 'FOOBAR'
    Prova a giocare con le tabelle (senza modificarle!) usando un tool amministrativo, così puoi capire qual è la query da fare per risalire all'informazione che ti serve in base alla tabella di sistema dove è memorizzata.

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

    Homepage | Blog | Delphi Podcast | Altri link...

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 © 2020 vBulletin Solutions, Inc. All rights reserved.