Clique abaixo para nos ajudar
Conectar-se

Esqueci minha senha

Estamos no Facebook
Buscar
 
 

Resultados por:
 


Rechercher Busca avançada

Quem está conectado
8 usuários online :: Nenhum usuário registrado, Nenhum Invisível e 8 Visitantes :: 1 Motor de busca

Nenhum

[ Ver toda a lista ]


O recorde de usuários online foi de 468 em 1/3/2012, 10:43
Espessura do cursor intermitente

7/3/2017, 09:08 por Jefferson Matakas

Bom dia a todos !!

Existe uma opcao no windows que pode ser acessada atraves da 'central da …

Comentários: 0

DESENVOLVIMENTO EM REDES

4/3/2017, 18:45 por AJC

Pessoal tem ou conhece livros ou material para programação em
redes usando banco de dados nativo …

Comentários: 0

USAR REPORT FORM

30/12/2016, 09:06 por AJC

Pessoal bom dia,
Estou com um grande problema, já pesquisei muita coisa sobre report form, mas o …

Comentários: 4

Como preencher campos vazios

9/2/2017, 11:55 por Linghston

Pessoal boa tarde,

É o seguinte, eu preciso preencher os campos de uma coluna da tabela DBF que …

Comentários: 2

Enviar msg para WhatsAPP via VFP

7/2/2017, 10:31 por Eliana

Olá Pessoal!

Alguém sabe se é possível enviar mensagem para o WhatsAPP via VFP?


Grata


Comentários: 0

Estatísticas
Temos 7037 usuários registrados
O último usuário registrado atende pelo nome de GETULIO

Os nossos membros postaram um total de 31 mensagens em 17 assuntos

Rotina para criar planilha em Excel

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Resolvido Rotina para criar planilha em Excel

Mensagem por Linghston em 19/9/2012, 07:31

Como vão todos,
Amigos a muito tempo uso a rotina abaixo para criar de uma forma muito legal e pratica as minhas planilhas em Excel via VFP, porem ela tem um "bugs" que é o seguinte: Se o um determinado campo da tabela dbf de onde ela puxa os dados para gerar a planilha, estiver vazia seja caractere, ou numérico ou sem a data, a rotina trava naquele campo e não carrega a planilha com os restantes dos dados.
Será que alguém poderia me ajudar resolver este "nó" nesta rotina ??

Obrigado
Linghston


ROTINA PARA CRIAR PLANILHA


Código:
With Thisform
   Wait Window "Aguarde, planilha sendo gerada..." Nowait
   Set Refresh To 5
   Set Exclusive Off
   Set Safety Off
   Local i,j,xlsheet,XLApp,tmpsheet

   Use c:\temp_pm Exclusive
   Count To xreg For registro=registro
   Select temp_pm.lista,;
      temp_pm.codigo,;
      temp_pm.denominaca,;
      temp_pm.comprador,;
      temp_pm.ramal,;
      temp_pm.email,;
      temp_pm.qtde_uso,;
      temp_pm.custo_un,;
      temp_pm.stock,;
      temp_pm.vr_stock,;
      temp_pm.aplicacao,;
      temp_pm.dtinclucao From temp_pm Into Array arrSalesincom

   tmpsheet = Getobject('','excel.sheet')
   XLApp = tmpsheet.Application
   XLApp.Visible = .T.
   XLApp.WorkBooks.Add()
   xlsheet = XLApp.ActiveSheet
   xlsheet.Cells(1,1).Value = "Registro"
   xlsheet.Cells(1,1).ColumnWidth = 15
   xlsheet.Cells(1,1).Font.Color = -3407872
   xlsheet.Cells(1,1).Font.TintAndShade = 0
   xlsheet.Cells(1,1).Font.Bold = .T.
   xlsheet.Cells(1,1).HorizontalAlignment = 3

   xlsheet.Cells(1,2).Value = "Codigo"
   xlsheet.Cells(1,2).ColumnWidth = 12
   xlsheet.Cells(1,2).Font.Color = -3407872
   xlsheet.Cells(1,2).Font.TintAndShade = 0
   xlsheet.Cells(1,2).Font.Bold = .T.
   xlsheet.Cells(1,2).HorizontalAlignment = 3

   xlsheet.Cells(1,3).Value = "Denominação"
   xlsheet.Cells(1,3).ColumnWidth = 60
   xlsheet.Cells(1,3).Font.Color = -3407872
   xlsheet.Cells(1,3).Font.TintAndShade = 0
   xlsheet.Cells(1,3).Font.Bold = .T.
   xlsheet.Cells(1,3).HorizontalAlignment = 3

   xlsheet.Cells(1,4).Value = "Comprador"
   xlsheet.Cells(1,4).ColumnWidth = 80
   xlsheet.Cells(1,4).Font.Color = -3407872
   xlsheet.Cells(1,4).Font.TintAndShade = 0
   xlsheet.Cells(1,4).Font.Bold = .T.
   xlsheet.Cells(1,4).HorizontalAlignment = 3

   xlsheet.Cells(1,5).Value = Ramal"
   xlsheet.Cells(1,5).ColumnWidth = 5
   xlsheet.Cells(1,5).Font.Color = -3407872
   xlsheet.Cells(1,5).Font.TintAndShade = 0
   xlsheet.Cells(1,5).Font.Bold = .T.
   xlsheet.Cells(1,5).HorizontalAlignment = 3

   xlsheet.Cells(1,6).Value = "Email"
   xlsheet.Cells(1,6).ColumnWidth = 100
   xlsheet.Cells(1,6).Font.Color = -3407872
   xlsheet.Cells(1,6).Font.TintAndShade = 0
   xlsheet.Cells(1,6).Font.Bold = .T.
   xlsheet.Cells(1,6).HorizontalAlignment = 3

   xlsheet.Cells(1,7).Value = "Qtde Usada"
   xlsheet.Cells(1,7).ColumnWidth = 10
   xlsheet.Cells(1,7).Font.Color = -3407872
   xlsheet.Cells(1,7).Font.TintAndShade = 0
   xlsheet.Cells(1,7).Font.Bold = .T.
   xlsheet.Cells(1,7).HorizontalAlignment = 3

   xlsheet.Cells(1,8).Value = "Custo Un."
   xlsheet.Cells(1,8).ColumnWidth = 30
   xlsheet.Cells(1,8).Font.Color = -3407872
   xlsheet.Cells(1,8).Font.TintAndShade = 0
   xlsheet.Cells(1,8).Font.Bold = .T.
   xlsheet.Cells(1,8).HorizontalAlignment = 3
   xlsheet.Range("J1:J65536").NumberFormat = "$ #,##0.000"

   xlsheet.Cells(1,9).Value = "Stock Almox."
   xlsheet.Cells(1,9).ColumnWidth = 10
   xlsheet.Cells(1,9).Font.Color = -3407872
   xlsheet.Cells(1,9).Font.TintAndShade = 0
   xlsheet.Cells(1,9).Font.Bold = .T.
   xlsheet.Cells(1,9).HorizontalAlignment = 3
   xlsheet.Range("k1:k65536").NumberFormat = "#,##0"

   xlsheet.Cells(1,10).Value = "Valor Stock"
   xlsheet.Cells(1,10).ColumnWidth = 30
   xlsheet.Cells(1,10).Font.Color = -3407872
   xlsheet.Cells(1,10).Font.TintAndShade = 0
   xlsheet.Cells(1,10).Font.Bold = .T.
   xlsheet.Cells(1,10).HorizontalAlignment = 3
   xlsheet.Range("L2:L65536").NumberFormat = "$ #,##0.000"

   xlsheet.Cells(1,11).Value = "Aplicação"
   xlsheet.Cells(1,11).ColumnWidth = 100
   xlsheet.Cells(1,11).Font.Color = -3407872
   xlsheet.Cells(1,11).Font.TintAndShade = 0
   xlsheet.Cells(1,11).Font.Bold = .T.
   xlsheet.Cells(1,11).HorizontalAlignment = 3

   xlsheet.Cells(1,12).Value = "Data Inclusão"
   xlsheet.Cells(1,12).ColumnWidth = 10
   xlsheet.Cells(1,12).Font.Color = -3407872
   xlsheet.Cells(1,12).Font.TintAndShade = 0
   xlsheet.Cells(1,12).Font.Bold = .T.
   xlsheet.Cells(1,12).HorizontalAlignment = 3


**** Seleção dos registros
   For i = 1 To xreg      && total de registros que tem no banco
      For j = 1 To 12
         If Isnull (arrSalesincom(i,j)) Then
            xlsheet.Cells(i+1,j).Value = 0
         Else
            xlsheet.Cells(i+1,j).Value = arrSalesincom(i,j)
         Endif
      Endfor
   Endfor

   With xlsheet
      Erase c:\planilhas\stock.xlsx 
      .SaveAs("c:\planilhas\stock.xlsx ") 
*   .Visible = .F.
   Endwith
   Close Data
   Thisform.Release()
Endwith
avatar
Linghston
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Resolvido Re: Rotina para criar planilha em Excel

Mensagem por Marcos Guedes em 19/9/2012, 14:05

Tente subistituir o seu SELECT:
Código:
SELECT ;
   temp_pm.lista,;
   temp_pm.codigo,;
   temp_pm.denominaca,;
   temp_pm.comprador,;
   temp_pm.ramal,;
   temp_pm.email,;
   temp_pm.qtde_uso,;
   temp_pm.custo_un,;
   temp_pm.stock,;
   temp_pm.vr_stock,;
   temp_pm.aplicacao,;
   temp_pm.dtinclucao ;
   FROM temp_pm INTO ARRAY arrsalesincom

Por este:
Código:
SELECT ;
      NVL(temp_pm.lista, ' '),;
      NVL(temp_pm.codigo, ' '),;
      NVL(temp_pm.denominaca, ' '),;
      NVL(temp_pm.comprador, ' '),;
      NVL(temp_pm.ramal, ' '),;
      NVL(temp_pm.email, ' '),;
      NVL(temp_pm.qtde_uso, 0),;
      NVL(temp_pm.custo_un, 0),;
      NVL(temp_pm.stock, ' '),;
      NVL(temp_pm.vr_stock, ' '),;
      NVL(temp_pm.aplicacao, ' '),;
      NVL(temp_pm.dtinclucao, CTOD('')) ;
      FROM temp_pm INTO ARRAY arrsalesincom

Observe o uso da função NVL que incluí em seu SELECT.
Tentei adivinhar os tipos de dados das colunas de sua tabela, então dá uma analisada e verifica se corresponde aos tipos que você definiu.

Como você disse que o problema estão nos campos não preenchidos, talvez resolva se você definir um valor padrão para os campos nulos.

Outra alternativa é você analisar o uso do FOR:
Código:
FOR i = 1 TO xreg      && total de registros que tem no banco
      FOR j = 1 TO 12
         IF ISNULL (arrsalesincom(i,j)) THEN
            xlsheet.cells(i+1,j).VALUE = 0
         ELSE
            xlsheet.cells(i+1,j).VALUE = arrsalesincom(i,j)
         ENDIF
      ENDFOR
   ENDFOR
Na condição ELSE substitua o valor atribuído à celular:
Código:
xlsheet.cells(i+1,j).VALUE = arrsalesincom(i,j)
Por um valor qualquer. Por exemplo:
Código:
xlsheet.cells(i+1,j).VALUE = "qualquer valor"

Se gerar o arquivo sem falhas, então trate o valor retornado por:
Código:
arrsalesincom(i,j)

Para caracteres vazios, ente substituir por "-", por exemplo.

Veja também esta rotina para uso do Excel com VFP:
[Você precisa estar registrado e conectado para ver este link.]

_________________
Marcos Guedes - Programador e desenvolvedor Web.


Visite o nosso portal:
[Você precisa estar registrado e conectado para ver este link.]

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: Rotina para criar planilha em Excel

Mensagem por Linghston em 24/9/2012, 11:00

Marcos,
Desculpe por demorar em lhe dar retorno sobre suas dicas, mas é que estive fora e impossibilitado e acessar o fórum.
Com estas suas dicas, consegui resolver este “nó” que estava atrapalhando minha rotina, mais exatamente acrescentando a função NVL como orientou.

Muito Obrigado mais uma vez pela ajuda.

Linghston
avatar
Linghston
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo


 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum