none
estrutura de uma tabela....

    Question

  • como posso pegar a estrtutura de uma tabela, os campos, tipos dos campos, .... atravez de algo como um SELECT...??

    no VB e VB.net consegui fazer isto facilmente, mas o problema é que o sistema é em CLIPPER,  nao existe dataset ou sei la oq... executo uma query e me retorna uma matriz com o resultado.....

    Friday, September 08, 2006 8:35 PM

All replies

  • cara infelizmente o clipper ou xbase nao tem schema de dados, com um recordset ou dataset e facil mais com select nao vai rolar. ( eu pelo menos nao conheco uma forma. )

     

    Abs.

    Sunday, September 10, 2006 2:33 AM
  • Olá!

    Experimente rodar estes dois comandos SQL:

    -- dados sobre estrutura da tabela
    SELECT o.name AS o_name, o.xtype as o_xtype, c.name AS c_name, c.length AS c_length, c.colid AS c_colid, c.status AS c_status, c.usertype AS c_usertype, c.typestat AS c_typestat, c.isnullable AS c_isnullable FROM sysobjects o LEFT OUTER JOIN  syscolumns c ON o.id = c.id WHERE (o.xtype = 'U' OR o.xtype = 'P') AND (o.status > 0) ORDER BY o.name, c.colid

    -- relacionamentos entre tabelas
    SELECT sysobjects_1.name AS const_name, sysobjects_2.name AS fkey_name, sysobjects_3.name AS rkey_name FROM dbo.sysobjects sysobjects_2 RIGHT OUTER JOIN dbo.sysreferences LEFT OUTER JOIN dbo.sysobjects sysobjects_1 ON dbo.sysreferences.constid = sysobjects_1.id ON sysobjects_2.id = dbo.sysreferences.fkeyid LEFT OUTER JOIN dbo.sysobjects sysobjects_3 ON dbo.sysreferences.rkeyid = sysobjects_3.id

    Espero que ajude.

    Thiago
    Friday, September 15, 2006 4:09 PM
  • Só um detalhe, o usuário que está acessando a base de dados precisa ter permissão para consultar esta tabela.
    Friday, September 22, 2006 1:27 PM
  • Caro Thiago Alves

    Gostei muito do exemplo que vocês desmostrou.

    Para ficar perfeito só faltou mostrar o nome do atributo que cada tabela se relaciona, teria como?

     

    Obrigado

    Bene

     

    Friday, October 27, 2006 11:44 PM
  • Bene... não tem como vc fazer assim ?

     

    SELECT * FROM INFORMATION_SCHEMA.COLUMNS
    WHERE TABLE_NAME = 'NOMETABELA'

    NESSE EXEMPLO ELE IRA TRAZER O NOME DA TABELA E TODAS AS SUAS COLUNAS...

    vc não consegue usar esse select ?

    Saturday, October 28, 2006 1:35 AM
  • Caro Hass

    Realmente o que descreveu acontece Blz,

    Mas o que estou querendo é saber o nome dos atributos que se relacionam ex:

    Tabela_A   Tebala_B

    idA                idB

    Nome           idFK

                          Endereço

     

    Resultado:

    NomeFK  AtributoFK    Tabela_Pai      Atributo_relacional

    FK_B_A   idFK               Tabela_A         idA

     

    Obrigado

    Bene

    Monday, October 30, 2006 4:48 AM
  • Bene nao era cllipper ? xbase.

     

    Abs;

    Monday, October 30, 2006 11:42 AM
  • ai vai ter que fazer uma query em tabelas de sistema mesmo....

     

    Monday, October 30, 2006 1:08 PM
  • Andre xbase nao tem tabelas de sistema.

     

    Abs;

    Monday, October 30, 2006 1:31 PM
  • mas e no SQL ou no Xbase ?   se for no SQL Blz se não...  eu não conhece xbase...

    abs

    Monday, October 30, 2006 4:24 PM
  • pois entao acho que eu fiquei perdido. o xbase nao tem tabelas de sistema mesmo que este esteja em linked server com o sql server.

    Abs.;

    Monday, October 30, 2006 4:51 PM
  • Marcelo,

    Acho que ele tem a aplicação em CLIPPER (front-end). Banco em SQL. Eu pelo menos entendi isso.

     

    Abrs.

    Tuesday, October 31, 2006 12:16 PM
  • Pessoal desculpem, entrei de férias ufa.. até que enfim...

    Mas explico minha questão.

    Preciso de uma query que me mostre as Tabelas de minha Base, os relacionamentos entre elas e o nome dos atributos que se relacionam.

    Estou desenvolvendo um FRONT-END para que meus usuários possam gerar query SQL, o resultado desta query gera um DataSet para geração de relatórios.

     

    Obrigado

    Bene

    Wednesday, November 01, 2006 1:02 AM
  • mais as tabelas estao no sql ou sao arquivos xbase ?
    Wednesday, November 01, 2006 10:06 AM
  • Marcelo Colla

    Elas estão no SQL 2005 Server

    Obrigado

    Bene

    Thursday, November 02, 2006 12:46 AM
  • Caro Marcelo

    Desculpe a demora, mas eu achava que já havia lhe respondido.

    Bom, minha base é SQL Server 2005

    Obrigado

    Bene

    Friday, November 03, 2006 2:37 AM
  • neste caso vc. pode usar as information schemas

    select * from information_schemas.tables e a information_schemas.Columns

     

    Abs;

    Monday, November 06, 2006 12:12 PM
  • Caro Marcelo

     

    Muito Obrigado por me conduzir até este ponto, está uma Blz.

    mas ainda preciso saber se é possivel montar uma query que me mostre qual atributo da Tabela_A se relaciona com qual atributo da Tabela_B.

    Explico:

    A query teria como resultado o Seguinte

    Tabela_A - idNumerador    Tabela_B - idTabela_A

    ou seja o idNumerador da Tabela_A se relaciona com o idTabela_A da Tabela_B

     

    Obrigado

    Bene

    Monday, November 06, 2006 1:54 PM
  • Olá Benê,

    O Thiago Alves postou uma solução que vai te ajudar... segue ela abaixo:

     

    -- dados sobre estrutura da tabela
    SELECT o.name AS o_name, o.xtype as o_xtype, c.name AS c_name, c.length AS c_length, c.colid AS c_colid, c.status AS c_status, c.usertype AS c_usertype, c.typestat AS c_typestat, c.isnullable AS c_isnullable FROM sysobjects o LEFT OUTER JOIN  syscolumns c ON o.id = c.id WHERE (o.xtype = 'U' OR o.xtype = 'P') AND (o.status > 0) ORDER BY o.name, c.colid

    -- relacionamentos entre tabelas
    SELECT sysobjects_1.name AS const_name, sysobjects_2.name AS fkey_name, sysobjects_3.name AS rkey_name FROM dbo.sysobjects sysobjects_2 RIGHT OUTER JOIN dbo.sysreferences LEFT OUTER JOIN dbo.sysobjects sysobjects_1 ON dbo.sysreferences.constid = sysobjects_1.id ON sysobjects_2.id = dbo.sysreferences.fkeyid LEFT OUTER JOIN dbo.sysobjects sysobjects_3 ON dbo.sysreferences.rkeyid = sysobjects_3.id

     

    Abrs

    Monday, November 06, 2006 2:00 PM
  • sim vc. pode usar tambem

    information_schema.KEY_COLUMN_USAGE, REFERENTIAL_CONSTRAINTS, de uma olhada geral nas information_schema acho que vc. pode resolver por elas mesmo. qualquer coisa retorne.

     

     

    Monday, November 06, 2006 2:03 PM