Excel forms

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Responder
master zyon
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 20
Registrado em: Sex, 21 Set 2007 4:20 pm
Localização: Americana

Pessoal,

Boa tarde!

Já vi vários tópicos relacionado a este tema porém ainda não consegui resolver o meu problema.

Preciso da seguinte situação.

O usuário adiciona uma planilha no meu forms e esta planilha adicionada deve ser imputada no banco. (no banco já existe a tabela criada no formato da planilha que irá ser inserida).

alguém pode me ajudar.?

Na verdade preciso que o cara clique em um botão X após ele clicar no mesmo ele seleciona o caminho onde esta a planilha a planilha selecionada deve ser salva no banco.


Abraço!
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Brother, seguinte...

Aí temos duas situações:

1) Guardar o XLS no banco, através de um BLOB;
2) Ler o xls (posto que você tem as mesmas colunas em uma tabela do teu banco) e, inserir na base de dados;

Sobre as duas situações existem alguns exemplos aqui no fórum.
Dê uma procurada pela palavra "Excel" que talvez ache o tópico indicado.

Qualquer coisa, manda ai.
master zyon
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 20
Registrado em: Sex, 21 Set 2007 4:20 pm
Localização: Americana

Trevisolli

Seguinte,

O esquema para o cara selecionar onde esta a planilha dele eu já consegui fazer utilizando a D2KWUTIL.pll.

A sacada está em como eu pega essa planilha que o cara selecionou e inputar na tabela..não axei nada sobre isso aqui....

tipo um loop que pega linha a linha e salva em uma tabela com a mesma estrutura da planilha.

vlw.!
master zyon
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 20
Registrado em: Sex, 21 Set 2007 4:20 pm
Localização: Americana

Apenas complementando, estou usando este codigo... Percebo que ele abre a planilha em excel especificada le os dados e fecha. Mais eu gostaria de saber como fazer pra pegar estes dados e armazena-los em uma tabela.

Selecionar tudo

 declare
 AppID           PLS_INTEGER; 
 DOCID           PLS_INTEGER; 
 conv_established BOOLEAN := FALSE; 
 V_NM_DESTINO  VARCHAR2(32000); 
 V_DS_CLASSE   VARCHAR2(32000); 
 V_DS_LOCAL    VARCHAR2(32000); 
 V_NM_ARQUIVO VARCHAR2(32000); 
  V_NM_DIRETORIO VARCHAR2(32000); 
  V_NR_LINHA NUMBER;
  V_NR_COLUNA NUMBER;
  V_DS_DADO VARCHAR2(32000); 

-- para abrir o arquivo -- 
 Begin
 	      V_NM_DIRETORIO := :bloco.txt_diretorio;
 	      V_NM_ARQUIVO := :bloco.txt_nome;
 	      
        V_NM_DESTINO := V_NM_DIRETORIO||V_NM_ARQUIVO||'.XLS';          
         CONV_ESTABLISHED := FALSE; 
         V_DS_CLASSE := win_api_environment.read_registry('HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.xls',null, FALSE); 
        V_DS_LOCAL  := win_api_environment.read_registry('HKEY_CLASSES_ROOT\'||V_DS_CLASSE||'\shell\open\command',null, FALSE); 
         AppID := DDE.App_Begin (V_DS_LOCAL,DDE.App_Mode_minimized); 
         WHILE NOT CONV_ESTABLISHED LOOP 
            BEGIN 
             DOCID := DDE.INITIATE('EXCEL','SYSTEM'); 
              CONV_ESTABLISHED := TRUE; 
           EXCEPTION 
                WHEN DDE.DMLERR_NO_CONV_ESTABLISHED THEN 
                  CONV_ESTABLISHED := FALSE; 
           END; 
         END LOOP; 
         DDE.Execute(docID, '[Open("'||V_NM_DESTINO||'")]',10000); 
         docid := DDE.INITIATE('EXCEL',V_NM_DESTINO); 


-- para ler o dado -- se o excel for em ingles, ao invez de L usa-se R(row) 
DDE.Request (docID, REPLACE('L'||V_NR_LINHA||'C'||V_NR_COLUNA,' '), V_DS_DADO, DDE.Cf_Text,  100000); 


--fecha o excel e o arquivo -- 
 DDE.TERMINATE(docID); 
dde.app_end(appid); 

end;
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Brother,

Dá uma olhada neste tópico.
qualquer coisa, manda ai.
master zyon
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 20
Registrado em: Sex, 21 Set 2007 4:20 pm
Localização: Americana

Trevisolli,

vê se pode me ajudar com este codigo.

Converti a planilha em um arquivo txt separado por ponto e virgula.

Achei este codigo para realizar o processo de inserção dos dados do arquivo txt na tabela minha, porém quando clico no botão para execução é apresentado o erro ORA-302000 sabe me dizer se existe algo errado, alguma sugestão etc?

Selecionar tudo

DECLARE 
     Arq text_io.file_type; 
     buffer varchar2(1000); 
BEGIN 

     loop 
     arq:= Text_IO.Fopen('filename',' R'); 
     Text_IO.Get_Line(arq,buffer); 
     
     INSERT INTO teste
  		(   A 
   		   ,B
   		) 
		 VALUES 
		( 
  		    substr(buffer, 1 ,10) , 
  		    substr(buffer, 11,20) 
		);
		
     end loop; 
     commit;
end;


desde já agradeço a atenção.
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 10 visitantes