Pular para o conteúdo principal

Postagens

Mostrando postagens com o rótulo sql

Procurando campos nas enormes tabelas do Protheus...

Quando estamos programando, de vez em quando precisamos localizar um campo para saber seu tipo e tamanho e declararmos corretamente variáveis e outros que receberão seus valores. Com a quantidade de campos cada vez maior nas tabelas do Protheus, é necessário usar artifícios para se ter agilidade nesta busca. Segue então, um script que ajuda a localização de um, neste "mar" de campos. Por exemplo, para localizar rapidamente o campo E2_NUM e ver suas propriedades: SELECT TABELAS.NAME, COLUNAS.NAME AS COLUNA, TIPOS.NAME AS TIPO, COLUNAS.LENGTH AS TAMANHO, COLUNAS.ISNULLABLE AS EH_NULO FROM sysobjects AS TABELAS, syscolumns AS COLUNAS, systypes AS TIPOS WHERE -- JOINS TABELAS.ID = COLUNAS.ID AND COLUNAS.USERTYPE = TIPOS.USERTYPE AND TABELAS.NAME = 'SE2010' AND COLUNAS.NAME = 'E2_NUM' Obs.: Post complementar à outro feito neste blog: SQL para Listar os campos das tabelas

Quando e quais tabelas customizadas SZ eu criei ?

Para saber, é simples. Você pode montar no Proteus (ou em sua intranet) uma tela que mostre o resultado da query abaixo: SELECT name, crdate FROM sysobjects WHERE xtype='U' AND name LIKE 'SZ%' ORDER BY crdate desc :)

Campos memo do Protheus com ASP e SQL Server

Se você trabalha com intranet e MS-SQL Server , acessando tabelas do Protheus via Web, já deve ter tido a necessidade de acessar campos tipo MEMO. O que ocorre é que apesar de você criar o campo como tipo MEMO, o Protheus (Configurador) cria este no SQL Server como tipo IMAGE. Se você armazenar a frase "Teste observacao", no momento que você mostrar em sua página, vai aparecer um bocado de interrogações. Isto porque a frase fica gravada como: 0x5465737465206F62736572766163616F2E. O conteúdo gravado no campo é binário. Para apresentá-lo, você pode usar a seguinte query (considerando que por exemplo uma tabela chamada SZT010 e um campo com o nome ZT_OBS): SELECT CONVERT (VARCHAR( 8000 ), CONVERT (BINARY( 8000 ), ZT_OBS )) AS cZTOBS FROM SZT010 WHERE ZT_DATA = '20100106' AND ZT_FILIAL = '02' Ou seja, quando você mostrar cZTOBS, a frase será mostrada normalmente. •  Quem viu este post, também viu:     Listar campos das tabelas   ...

SQL para Listar os campos das tabelas

Usando SQL para listar os campos das tabelas desejadas: Este script é prático caso você tenha necessidade de listar campos (e outras propriedades) de uma ou mais tabelas do Protheus.  Neste exemplo o script mostra os campos da SA1010: SELECT TABELAS.NAME, COLUNAS.NAME AS COLUNA, TIPOS.NAME AS TIPO, COLUNAS. LENGTH AS TAMANHO, COLUNAS.ISNULLABLE AS EH_NULO FROM sysobjects AS TABELAS , syscolumns AS COLUNAS , systypes AS TIPOS WHERE -- JOINS TABELAS.ID = COLUNAS.ID AND COLUNAS.USERTYPE = TIPOS.USERTYPE AND TABELAS.NAME = 'SA1010' •  Veja também: Usando ADVPL com SQL

Usando ADVPL com SQL

Segue uma das maneiras de usar ADVPL com SQL : user function mostrasql    oRBSFFont := tfont():new( "lucida console" ,, -10, .t.)    cQuery := "SELECT B1_COD, B1_DESC FROM SB1010 WHERE D_E_L_E_T_=''"    cQuery := changequery(cQuery)    dbusearea(.t., "TOPCONN" , tcgenqry(,,cQuery), "TMP" , .f., .t.)    cProduto := ""    do while ! eof ()       cProduto := cProduto + (TMP->B1_COD +  " " + B1_DESC + chr(10))       dbskip()    enddo    dbclosearea()    @ 0, 0 to 420, 550 dialog odJanela title "RESULTADO"    oRBSFMemo := tmultiget():new(92, 5,{uif( pcount ()>0, cProduto:=u, cProduto)}, odJanela, 265, 100, oRBSFFont,,,,,.t.,,,,,,.t.)    @ 195, 241 bmpbutton type 1 action close(odJanela) activate dialog odJanela centered return nil •  Veja também: Campos memo Protheus com ASP.