Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Oracle Forms 6i - manipulacija fajlovima na lokalnoj mašini

[es] :: Oracle :: Oracle Forms 6i - manipulacija fajlovima na lokalnoj mašini

[ Pregleda: 6232 | Odgovora: 15 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Sun Tzu
Darko Bajic
Banja Luka

Član broj: 13999
Poruke: 12
..l.net.84.93.81.in-addr.arpa.



Profil

icon Oracle Forms 6i - manipulacija fajlovima na lokalnoj mašini02.12.2008. u 15:05 - pre 186 meseci
Problem se sastoji u potrebi da se iz višekorisničke mrežne aplikacije urađene sa Oracle forms 6i pristupi folderu na lokalnoj mašini (ne na serveru) u cilju generisanja tekstualnih fajlova.
Da li je neko riješio sličan problem i ako jeste KAKO?

Pozdrav!
 
Odgovor na temu

brzak

Član broj: 66407
Poruke: 126



+5 Profil

icon Re: Oracle Forms 6i - manipulacija fajlovima na lokalnoj mašini03.12.2008. u 07:37 - pre 186 meseci
Mozes da koristis built-in paket TEXT_IO zajedno sa D2KWUTIL bibliotekom.
Da bi koristio D2KWUTIL.pll potrebni su ti i sledeci dll: D2KWUTIL.dll, D2KWUT60.dll. Biblioteke treba da se nalaze u %PATH% varijabli. Drugi nacin je da se smeste u izvsni folder, i preko shorcut-a da se namesti izvrsavanje u tom folderu.
 
Odgovor na temu

aldabic
Serbia

Član broj: 18240
Poruke: 98
*.premiumsoft.co.yu.



Profil

icon Re: Oracle Forms 6i - manipulacija fajlovima na lokalnoj mašini03.12.2008. u 10:04 - pre 186 meseci
Kad smo vec kod ovoga,

zna li neko kako se iz baze neki blob podatak snimi kao fajl na Application server?

UTL_FILE i TEXT_IO cini se ne resavaju problem.

Fajlovi se upload-uju sa klijentske masine (webutil-om), fajlovi se dakle cuvaju u bazi. U nekoj drugoj aplkaciji ih treba samo snimiti na fajl sistem Appl. servera. Fajlovi su razni, ima slika, word, xls dokumenata, ali i .exe, i svakakvih drugih fajlova. Ne treba ih prikazivati korisniku, samo ih prebaciti na Appl. server..
Kako?

Verzija Forms-a 10.


Pozz
 
Odgovor na temu

brzak

Član broj: 66407
Poruke: 126



+5 Profil

icon Re: Oracle Forms 6i - manipulacija fajlovima na lokalnoj mašini03.12.2008. u 10:23 - pre 186 meseci
aldabic,
Probaj da koristis DDE funkcije (Dynamic Data Exchange)
 
Odgovor na temu

aldabic
Serbia

Član broj: 18240
Poruke: 98
*.premiumsoft.co.yu.



Profil

icon Re: Oracle Forms 6i - manipulacija fajlovima na lokalnoj mašini03.12.2008. u 10:54 - pre 186 meseci
DDE funkcije omogucuju manipulaciju sa fajlovima koji se nalaze na appl. serveru (otvori dokument, upisi nesto u njega, procitaj vrednost u excelu, upisi nesto u excel).
Ali kod mene fajlovi jos uvek nisu na appl. serveru, Pokusavam da ih tamo postavim...
 
Odgovor na temu

brzak

Član broj: 66407
Poruke: 126



+5 Profil

icon Re: Oracle Forms 6i - manipulacija fajlovima na lokalnoj mašini03.12.2008. u 11:49 - pre 186 meseci
Probao si sa WEBUTIL_FILE_TRANSFER (CLIENT_TO_AS i slicno)
 
Odgovor na temu

aldabic
Serbia

Član broj: 18240
Poruke: 98
*.premiumsoft.co.yu.



Profil

icon Re: Oracle Forms 6i - manipulacija fajlovima na lokalnoj mašini03.12.2008. u 12:14 - pre 186 meseci
Jesam, radi to,

ali ..

Mogu da uradim ovo:

DB_To_Client_With_Progress, pa onda
Client_To_AS.

Ali dva puta vozam fajl iz baze klijentu, pa od klijenta na Appl. server.
I ne znam da li kljent ima win ili Linux, te ne smem snimiti na folder c:\ . Sta ako klijent ima linux, pa nema folder c:\ ?
Plus sto dva puta radim dowload, malteretiram mrezu i klijenta.

Mozda cu ovo uraditi u krajnjem slucaju, ali bih max da izbegnem..

Hvala na pomoci..




 
Odgovor na temu

brzak

Član broj: 66407
Poruke: 126



+5 Profil

icon Re: Oracle Forms 6i - manipulacija fajlovima na lokalnoj mašini03.12.2008. u 12:22 - pre 186 meseci
Jos kad bi bilo DB_TO_AS :)
Pa i nije bila neka pomoc, al ok
 
Odgovor na temu

aldabic
Serbia

Član broj: 18240
Poruke: 98
*.premiumsoft.co.yu.



Profil

icon Re: Oracle Forms 6i - manipulacija fajlovima na lokalnoj mašini03.12.2008. u 13:33 - pre 186 meseci
Jeeeee, evo resenja!

PROCEDURE blob2file(doc_id number, folder varchar2) IS
vblob BLOB;
vstart NUMBER := 1;
bytelen NUMBER := 32000;
len NUMBER;
my_vr RAW(32000);
x NUMBER;
l_output utl_file.file_type;
p_filename VARCHAR2(2000);
BEGIN
SELECT sadrzaj, datoteka, dbms_lob.getlength(SADRZAJ)
INTO vblob, p_filename, LEN
FROM r_datoteka
WHERE id = doc_id;
l_output := utl_file.fopen(folder, p_filename, 'WB', 32760);
x := len;
IF len < 32760 THEN
utl_file.put_raw(l_output,vblob);
utl_file.fflush(l_output);
ELSE -- write in pieces
vstart := 1;
WHILE vstart < len
LOOP
dbms_lob.read(vblob,bytelen,vstart,my_vr);

utl_file.put_raw(l_output,my_vr);
utl_file.fflush(l_output);
vstart := vstart + bytelen;
x := x - bytelen;
IF x < 32000 THEN
bytelen := x;
END IF;
END LOOP;
END IF;
utl_file.fclose(l_output);
END blob2file;


"folder" je Oracle directory:

create or replace directory dir_temp as 'd:\temp'; (na Appl.serveru) ako je win. Ako je Linux , onda nesto tipa /home/oracle/temp npr..

Pozz!
 
Odgovor na temu

Sun Tzu
Darko Bajic
Banja Luka

Član broj: 13999
Poruke: 12
..l.net.84.93.81.in-addr.arpa.



Profil

icon Re: Oracle Forms 6i - manipulacija fajlovima na lokalnoj mašini03.12.2008. u 14:43 - pre 186 meseci
Brzak, zahvaljujem ti se na odgovoru. Ukoliko imas neki link na tutorijal ili primjer toga sto si naveo bilo bi isto od pomoci. Jos jednom thx!
 
Odgovor na temu

brzak

Član broj: 66407
Poruke: 126



+5 Profil

icon Re: Oracle Forms 6i - manipulacija fajlovima na lokalnoj mašini03.12.2008. u 14:55 - pre 186 meseci
Citat:
Sun Tzu: Brzak, zahvaljujem ti se na odgovoru. Ukoliko imas neki link na tutorijal ili primjer toga sto si naveo bilo bi isto od pomoci. Jos jednom thx!


Sve sto imam je nesto sto je produkciono u nasoj firmi, to ne smem da saljem. Postavi malo konkretnije problem, dobices ovde sigurno resenje, ako ne od mene onda od nekog na forumu.
 
Odgovor na temu

Sun Tzu
Darko Bajic
Banja Luka

Član broj: 13999
Poruke: 12
..l.net.84.93.81.in-addr.arpa.



Profil

icon Re: Oracle Forms 6i - manipulacija fajlovima na lokalnoj mašini04.12.2008. u 12:28 - pre 186 meseci
Imamo aplikaciju rađenu u "Oracle Forms6i" koja se vrti na serveru, a sad se nam se ukazala potreba da generišemo CSV fajlove na lokalnim računarima dakle kod operatera koji pristupaju aplikaciji kroz brauzer.

Ono što mi pokušavamo je da riješimo problem korištenjem razvojnog alata "Oracle Forms 6i" u kome je i pisana naša poslovna aplikacija, jer smo vezani za tu staru verziju. Da možemo koristiti novije Formse problem ne bi ni postojao.

Bio bih vam zahvalan na pomoći ako neko ima slično rješenje, dakle web aplikaciju na serveru, rađenu u "Forms 6i" koja generise tekstualne fajlove i snima ih na lokalnim diskovima korisničkih računara.
 
Odgovor na temu

brzak

Član broj: 66407
Poruke: 126



+5 Profil

icon Re: Oracle Forms 6i - manipulacija fajlovima na lokalnoj mašini05.12.2008. u 12:40 - pre 186 meseci
Mi ovde imamo 6i i koristimo kao client-server aplikaciju i 10g koja je troslojna
U obe varijante, txt fajlovi su na utl_file_dir direktorijumu
Ako treba nesto prebaciti na klijentsku masinu, koristimo:

10g:
PROCEDURE copyFile(fileSource IN varchar2
,fileDestination IN varchar2) IS
l_ok boolean;
BEGIN
l_ok:=WEBUTIL_FILE.COPY_FILE(fileSource,FileDestination);
EXCEPTION
WHEN OTHERS THEN
null;
END;

Na 6i koristimo nesto tipa:
Win_Api_Utility.Move_File
(l_utl_dir||file_name,
l_utl_dir||datoteka||'.rac',
FALSE);

U oba slucaja je l_utl_dir onakav kako ga klijent vidi.

Nemam iskustva sa serverom 6i, pa ne znam kako se ove f-je ponasaju u takvom okruzenju.
 
Odgovor na temu

brzak

Član broj: 66407
Poruke: 126



+5 Profil

icon Re: Oracle Forms 6i - manipulacija fajlovima na lokalnoj mašini05.12.2008. u 12:55 - pre 186 meseci
Evo i primer koriscenje copyfile na 10g

copyFile(l_utl_dir||l_fajl,webutil_clientinfo.get_system_property('user.home')||'\STAMPAVUG\'||l_fajl);
copyFile(l_utl_dir||l_fajl_log,webutil_clientinfo.get_system_property('user.home')||'\STAMPAVUG\'||l_fajl_log);

Mozda nesto tipa ti moze pomoci

DECLARE
cpf_source VARCHAR2(500) := 'o:\test.txt';
cpf_target VARCHAR2(500) := 'c:\test.txt';
begin
WIN_API_UTILITY.copy_file(cpf_source,cpf_target,TRUE);
end;

Naravno, trebas da attacujes D2kwutil.pll na formu
 
Odgovor na temu

brzak

Član broj: 66407
Poruke: 126



+5 Profil

icon Re: Oracle Forms 6i - manipulacija fajlovima na lokalnoj mašini28.07.2009. u 12:08 - pre 178 meseci
Evo procedure koja prebacuje sadrzaj forme u Excel. Radi sa Forms 6i, i koristi d2kwutil biblioteku.

PROCEDURE export_2_excel (p_block IN VARCHAR2)
IS
application ole2.obj_type;
workbooks ole2.obj_type;
workbook ole2.obj_type;
worksheets ole2.obj_type;
worksheet ole2.obj_type;
args ole2.list_type;
cell ole2.obj_type;
j INTEGER;
k INTEGER;
file_name_cl VARCHAR2 (32767);
item_prompt VARCHAR2 (32767);
user_cancel EXCEPTION;
item_name VARCHAR2 (250);
item_last VARCHAR2 (250);
item_count NUMBER := 0;
itm_type NUMBER;
fst_blkname VARCHAR2 (250);
blk_row_count NUMBER;
fst_item VARCHAR2 (250);
row_sep NUMBER := 1;
selection ole2.obj_type;
colum ole2.obj_type;
item_last_nav VARCHAR2 (5);
item_first_nav VARCHAR2 (5);
itmnext VARCHAR2 (100);
itm VARCHAR2 (100);
BEGIN
--file_name_cl := get_file_name('C:','','|Excel Documents(*.xls)|*.xls|','Select output document...',SAVE_FILE,true);
--file_name_cl := SUBSTR(file_name_cl,1,LENGTH(file_name_cl));

/*file_name_cl is not returning any value so the following lines raised a internal PLSQL Error since the Exception
user_cancel is not assigned to any error number ?

--IF file_name_cl IS NULL THEN
--RAISE user_cancel;
--END IF; */
application := ole2.create_obj ('Excel.Application');
ole2.set_property (application, 'Visible', 1);
workbooks := ole2.get_obj_property (application, 'Workbooks');
workbook := ole2.invoke_obj (workbooks, 'Add');
worksheets := ole2.get_obj_property (workbook, 'Worksheets');
worksheet := ole2.invoke_obj (worksheets, 'Add');
/* Get the first and last block name */

/* Make last_blkname = NULL If both are same so that the loop executes once */

/* Loop through all the Blocks in the form */
GO_BLOCK (p_block);
item_count := 0;
fst_blkname := :SYSTEM.current_block;
blk_row_count := GET_BLOCK_PROPERTY (fst_blkname, records_displayed);
/* Get the first and last items in the particular block */
item_name := GET_BLOCK_PROPERTY (fst_blkname, first_item);
fst_item := item_name;
item_last := GET_BLOCK_PROPERTY (fst_blkname, last_item);
-- item_last_nav := get_item_property(fst_blkname||'.'||item_last,navigable);
-- set_item_property(fst_blkname||'.'||item_last,navigable,property_true);
itm := GET_BLOCK_PROPERTY (fst_blkname, first_item);

/* Loop through all the items in the block */
LOOP
EXIT WHEN itm IS NULL;

/* Get item count */
IF f_visible_item (fst_blkname || '.' || itm)
THEN
item_count := item_count + 1;
END IF;

itm := GET_ITEM_PROPERTY (fst_blkname || '.' || itm, nextitem);
END LOOP;

IF blk_row_count > 1
THEN
FIRST_RECORD;
END IF;

-- GO_ITEM (fst_blkname || '.' || fst_item);
GO_BLOCK (fst_blkname);
FIRST_RECORD;
itm := GET_BLOCK_PROPERTY (fst_blkname, first_item);
k := 1; /* Represemts column number */
j := row_sep + 1; /* Represents row number */

/* Add the column headings using item prompts */
-- FOR k IN 1 .. item_count + 1 /* Block has n visible columns */
LOOP
EXIT WHEN itm IS NULL;

IF f_visible_item (fst_blkname || '.' || itm)
THEN
item_prompt := GET_ITEM_PROPERTY (fst_blkname || '.' || itm, prompt_text);
args := ole2.create_arglist;
ole2.add_arg (args, j);
ole2.add_arg (args, k);
cell := ole2.get_obj_property (worksheet, 'Cells', args);
ole2.destroy_arglist (args);
ole2.set_property (cell, 'Value', item_prompt);
ole2.RELEASE_OBJ (cell);
k := k + 1;
END IF;

itm := GET_ITEM_PROPERTY (fst_blkname || '.' || itm, nextitem);
-- NEXT_ITEM;
END LOOP;

j := j + 1; /* Add to rowcount so that data won't overwrite column headings! */
itm := GET_BLOCK_PROPERTY (fst_blkname, first_item);

LOOP
/* Add in all the data */
-- FOR k IN 1 .. item_count + 1 /* Block has n visible columns */
k := 1;

LOOP
EXIT WHEN itm IS NULL;

IF f_visible_item (fst_blkname || '.' || itm)
THEN
args := ole2.create_arglist;
ole2.add_arg (args, j);
ole2.add_arg (args, k);
cell := ole2.get_obj_property (worksheet, 'Cells', args);
ole2.destroy_arglist (args);
ole2.set_property (cell, 'Value', NAME_IN (fst_blkname || '.' || itm));
ole2.RELEASE_OBJ (cell);
k := k + 1;
END IF;

itm := GET_ITEM_PROPERTY (fst_blkname || '.' || itm, nextitem);
END LOOP;

j := j + 1;

/* Check for last record */
IF :SYSTEM.LAST_RECORD = 'TRUE'
THEN
EXIT;
ELSE
/* If Records_displayed is more than 1 then only move to the next record specifically for Master-detail blocks */
IF blk_row_count > 1
THEN
NEXT_RECORD;
itm := GET_BLOCK_PROPERTY (fst_blkname, first_item);
ELSE
EXIT;
END IF;
END IF;
END LOOP;

-- if item_last_nav='FALSE' then
-- set_item_property(item_last,navigable,property_false);
-- end if;
FIRST_RECORD;
--AutoFit
cell := ole2.get_obj_property (worksheet, 'UsedRange');
colum := ole2.get_obj_property (cell, 'Columns');
ole2.invoke (colum, 'AutoFit');
--i selektuj 1,1!
args := ole2.create_arglist;
ole2.add_arg (args, 1);
ole2.add_arg (args, 1);
cell := ole2.get_obj_property (worksheet, 'Cells', args);
ole2.invoke (cell, 'Select');
ole2.destroy_arglist (args);
ole2.RELEASE_OBJ (colum);
ole2.RELEASE_OBJ (cell);
--kraj AutoFit
ole2.RELEASE_OBJ (worksheet);
ole2.RELEASE_OBJ (worksheets);
/* Save the Excel file created */
args := ole2.create_arglist;
ole2.add_arg (args, file_name_cl);
ole2.invoke (workbook, 'Save', args);
ole2.destroy_arglist (args);
/* release workbook */
ole2.RELEASE_OBJ (workbook);
ole2.RELEASE_OBJ (workbooks);
/* Release application */
ole2.invoke (application, 'Quit');
ole2.RELEASE_OBJ (application);
--EXCEPTION
--WHEN user_cancel THEN
--RAISE;
END;

Kod mene je to zakaceno na meni, i ovo je poziv

DECLARE
cur_blk VARCHAR2 (40) := :SYSTEM.cursor_block;
cur_rec NUMBER;
bk_id BLOCK;
BEGIN
bk_id := FIND_BLOCK (cur_blk);
cur_rec := GET_BLOCK_PROPERTY (bk_id, records_displayed);

IF cur_rec > 1
THEN
export_2_excel (:SYSTEM.current_block);
ELSE
message ('Operacija moguca samo za multi record blok!');
END IF;
END;

Eto, mozda ce nekom zatrebati.
 
Odgovor na temu

Zavisan
Bar

Član broj: 14301
Poruke: 78
*.crnagora.net.

ICQ: 145711472


+2 Profil

icon Re: Oracle Forms 6i - manipulacija fajlovima na lokalnoj mašini22.08.2010. u 17:02 - pre 165 meseci
Nadam se da temu neko gleda.
Naime imamo aplikaciju rađenu u "Oracle Forms6i" koja se vrti na serveru i koristimo kao client-server aplikaciju i 10g. Na lokalnoj mašini se pokreće forma a u targetu je
C:\orant\BIN\ifrun60.EXE \\192.168.1.2\Oracle\nazivforme.fmx

Pošto je forma iskopirana na lokalnoj mašini, kada sam u kancelariji sve radi bez problema. Međutim kada odem "van" i zakačim se na VPN pokreteanje u rad sa formom je tako spor da je neizdržljivo. Meniji se učitavaju po 30 sekundi, pregled dokumenata je prespor. Forma ima 730 KB i gledajući po tome zaista jne razumijem o čemu se radi.

Postoji li mogućnost da se ovo ubrza, optimizuje ili mi u nečemu griješimo.
 
Odgovor na temu

[es] :: Oracle :: Oracle Forms 6i - manipulacija fajlovima na lokalnoj mašini

[ Pregleda: 6232 | Odgovora: 15 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.