quinta-feira, novembro 02, 2006

Oracle - Tabela temporária

Este artigo explica muito bem como trabalhar com tabelas temporárias no Oracle.

PowerBuilder - Exportando dados de uma DataWindow para o MS Excel

Texto retirado do grupo de discussão de PB

Exportando dados de uma DataWindow para o Excel ultilizando OLE AutomationX

O PowerBuilder tem uma função para exportar dados para MS-Excel, mas ela limitada a dados de DML , com esta rotina podemos exportar toda a DataWindow. É um código simples e pode ser aperfeiçoado para uma aplicação mais complexa.


Passo 1 : Crie um nonvisual object salve ente objeto como nca_excel


Passo 2 : Crie uma função neste objeto com o nome de GetColumns Insira o código abaixo :

// Monta uma lista de todas as colunas da DW para exportação

Long ll_I, ll_Cols

ll_Cols = Long( adw_DW.Describe( 'datawindow.column.count' ) )

FOR ll_I = ll_cols TO 1 STEP -1

as_columns[ ll_I ] = adw_DW.Describe( '#' + String( ll_I ) + '.Name' )

NEXT


Passo 3: Crie uma função neste objeto com o nome de GetData. Esta função retorna um ANY. Propositalmente esta função foi colocada separada porque ela pode ser expandida e tratar ambém um Datasource.Insira o código abaixo :

Long ll_Col

Any la_A

IF al_Row > adw_DW.RowCount() THEN RETURN ""

ll_Col = Long( adw_DW.Describe( as_Column + ".ID" ) )

IF ll_Col > 0 THEN la_A = adw_DW.object.data.primary.current[ al_Row, ll_Col ]

RETURN la_A

Passo 4:Crie uma função neste objeto com o nome de inttocolumn .Esta função retorna um String.

// Converte a posição da coluna para o spreadsheet da coluna no Excel

String ls_Col

Integer li_Min, li_Max

IF ai_col <= 0 THEN RETURN ""

li_Max = ai_col / 26

li_Min = ai_col - ( li_Max * 26 )

IF li_Max > 0 THEN

ls_Col = Char( 64 + li_Max )

END IF

ls_Col += String( Char( 64 + li_Min ) )

RETURN ls_Col


Passo 5: Esta é a rotina principal do Objeto Crie uma função neste objeto com o nome de ExportToExcel .

// Exportando dados para o Excel

OleObject lole_OLE, lole_Sheet

String ls_Columns[]

Long ll_Row, ll_Col, ll_Cols

lole_OLE = CREATE OleObject

SetPointer( HourGlass! )

lole_OLE.ConnectToNewObject( 'excel.application' )

lole_OLE.Workbooks.Add

lole_sheet = lole_OLE.Application.ActiveWorkbook.WorkSheets[1]

this.GetColumns( adw_DW, ls_Columns )

ll_Cols = UpperBound( ls_Columns )

FOR ll_col = 1 TO ll_cols

lole_Sheet.Cells[ 1, ll_Col ] = ls_Columns[ ll_Col ]

NEXT

FOR ll_Row = 2 TO al_rows + 1

FOR ll_Col = 1 TO ll_cols

lole_Sheet.Cells[ ll_Row, ll_Col ] = this.GetData( adw_DW, ll_Row - 1, ls_Columns[ ll_Col ] )

NEXT

NEXT

lole_Sheet.Range( inttocolumn( 1 ) + "1:" + inttocolumn( ll_Cols ) + "1").Select

lole_OLE.Selection.Font.Bold = True

lole_Sheet.Range("A1:A1").Select

lole_Sheet.Columns( inttocolumn( 1 ) + ":" + inttocolumn( ll_cols ) ).EntireColumn.AutoFit

lole_OLE.Application.Visible = TRUE

// Código corrigido por Cristina da ( Multipla )

lole_OLE.Application.Workbooks(1).Saveas("C:\TESTE.XLS")

// lole_OLE.DisconnectObject() DESTROY lole_OLE


Salve o objeto..... Na sua aplicação em um botão ou item de menu escreva a chamada do objeto.

nca_excel lnca_Excel

lnca_Excel.ExportToExcel( dw_1, dw_1.RowCount() )

Onde " dw_1" é a DataWindow que você quer exportar.

Oracle - Gerando Número Sequencial de Registros

Texto escrito por João Carlos S. Ribeiro

Pessoal,

Para quem não conhece, a função analítica do Oracle DENSE_RANK gera um número seqüencial para cada linha pertencente a um determinado grupo de linhas. Vejam o exemplo:

Suponhamos a tabela MUNICIPIO:

SGUF NOMMUN
AP Santana
AP Macapá
MG Belo Horizonte
MG Leopoldina
MG Cataguases
SP São Paulo
SP Campinas
SP Santos
SP Mogi-mirim
SP Jundiaí

Para gerar um seqüencial dos municípios, classificados alfabeticamente, DENTRO dos estados, podemos fazer:

SELECT sguf, DENSE_RANK () OVER (PARTITION BY sguf ORDER BY nommun) AS seq, nommun
FROM municipio
ORDER BY 1, 2;

Resultado:

sguf seq nommun
AP 1 Macapá
AP 2 Santana
MG 1 Belo Horizonte
MG 2 Cataguases
MG 3 Leopoldina
SP 1 Campinas
SP 2 Jundiaí
SP 3 Mogi-mirim
SP 4 Santos
SP 5 São Paulo

Mais detalhes podem ser obtidos na documentação do Oracle.

Diversos – Solução para Problemas com Monitor 15' LCD da Proview

Entrei em contato com uma autorizada que me informou que este erro ocorreu em um lote especifico de monitores LCD da Proview.
Para resolvê-lo, é necessário um equipamento especifico que reinstala o FirmWare do equipamento.
O grande problema é que existe apenas um equipamento destes para todo o Brasil. Estou aguardando que este equipamento chegue a Belo Horizonte para realizar o conserto do meu monitor.