Search  
Friday, May 25, 2012 ..:: Forum ::.. Register  Login
 Forum Minimize
Pentru a putea posta mesaje trebuie să vă înregistraţi.
Notă: Mesajele cu conţinut jignitor sau ilegal (inclusiv cereri de soft piratat) nu sunt acceptate şi vor fi şterse imediat .

Pentru a primi raspunsuri rapide si corecte, scrieti in mesaj ce intentionati sa faceti, ce mesaj de eroare primiti, in ce context si in urma caror actiuni. De asemenea, mentionati versiunea de FoxPro in care lucrati!
Dacă nu specificați versiunea, se consideră VFP 9.0 SP2.

SearchForum Home
  Visual FoxPro  Form-uri si generatoare de form-uri  Problema Pagefr...
 Problema Pageframe
 
 4/8/2010 1:47:18 PM
User is offlineLordVlad
53 posts


Problema Pageframe
 (N/A)
Buna ziua,

Am un pageframe cu doua pagini. Intr-o pagina exista un grid ce ia valori din tabela "imobile" iar in cealalta pagina exista textbox-uri ce iau valori prin ControlSource din tabela "clienti".
Problema e la rularea aplicatiei, imi da eroare cum ca alias-ul imobile nu a fost gasit. Daca in load-ul formului adaug "use imobile", imi va da eroare cum ca alias-ul clienti nu a fost gasit. Daca modific in "use clienti" atunci am problema cu alias-ul imobile.
Cum pot impaca si capra (pageframe-ul ce foloseste tabela "imobile") si varza (pageframe-ul cu tabela "clienti")? Am incercat sa deschid tabelele in fel si chip, prin tot felu de metode dar nu reusesc sa scap de eroare

Va multumesc!
Cu stima,
Vlad
 4/8/2010 2:17:20 PM
User is offlineoviciandrus
762 posts
www.comptech.ro
1st




Re: Problema Pageframe
 (N/A) Modified By oviciandrus  on 4/8/2010 2:18:52 PM)
in Load:

use IMOBILE again shared in 0
use CLIENTI again shared in 0

in Destroy:

use in (SELECT("IMOBILE"))
use in (SELECT("CLIENTI"))
 4/8/2010 2:17:23 PM
User is offlineDaniel Buduru
2335 posts
1st




Re: Problema Pageframe
 (N/A)
Adu ambele tabele in form.dataenvironment.

Sau

In form.Load
USE clienti IN 0
USE imobile IN 0

Daniel Buduru
 4/8/2010 2:58:08 PM
User is offlineLordVlad
53 posts


Re: Problema Pageframe
 (N/A)
Perfect, erori nu mai am dar gridul meu e un chenar alb fara niciun continut. Nici macar capu de tabel nu apare. Pentru grid am folosit Builder-ul deci nu am intervenit in nimic ca sa il stric...

Va multumesc!
Cu stima,
Vlad
 4/8/2010 3:04:54 PM
User is offlineoviciandrus
762 posts
www.comptech.ro
1st




Re: Problema Pageframe
 (N/A)
la RecordSource la grid sa treci IMOBILE
 4/8/2010 3:09:59 PM
User is offlineLordVlad
53 posts


Re: Problema Pageframe
 (N/A)
Gata, am rezolvat si grid-ul.
Dar acu am dat de alta problema. Intr-un alt pageframe (un al 3-lea), am un formular ce trebuie completat iar informatiile completate vor fi adaugate in baza de date. Problema e cu butonul ce se ocupa de adaugarea datelor in baza de date. Imi da eroare "File is in use".
Codul butonului:

use clienti
go top
LOCATE FOR upper(alltr(clienti.ci)) == upper(alltr(thispf.ci.Value))
IF FOUND( )
[...]
ELSE
INSERT [...]
ENDIF

Am incercat sa scap de linia "use clienti" dar nu stiu cum sa indic in alt mod unde sa faca locate in cadrul tabelei "clienti".
 4/8/2010 3:18:42 PM
User is offlineoviciandrus
762 posts
www.comptech.ro
1st




Re: Problema Pageframe
 (N/A) Modified By oviciandrus  on 4/8/2010 3:18:56 PM)
in loc

USE clienti

scrie

SELECT "clienti"
 4/8/2010 3:19:24 PM
User is offlineLordVlad
53 posts


Re: Problema Pageframe
 (N/A)
USE-ul cu IN 0 sau cu again shared in 0 mi-a mai dat ceva peste cap.
In cadrul load-ului mai faceam urmatorul lucrum, dupa ce deschideam tabela: CURSORSETPROP('buffering',5).
Rezultatul obtinut era urmatorul: Daca modificam continutul textboxurilor ce aveau controlsource, nu era pastrata modificarea deoarece in cadrul form.destroy aveam urmatorul cod:
DO WHILE TXNLEVEL( ) > 0
ROLLBACK
ENDDO
Pentru ca modificarile sa fie pastrate aveam un buton special pentru salvare ce continea codul:
BEGIN TRANSACTION
lSuccess = TABLEUPDATE(.T.,.F.)
IF lSuccess THEN
MESSAGEBOX("Modificarile au fost salvate")
ENDIF
END TRANSACTION

Dar acum nu mai functioneaza "undo-ul"... orice modificare fac, ramane...
 4/8/2010 3:22:23 PM
User is offlineDaniel Buduru
2335 posts
1st




Re: Problema Pageframe
 (N/A)
Daca ai construit gridul cu builderul, ti-a adaugat deja tabela respectiva in form.dataenvironment.
Mai bine pune-ti toate tabelele in dataenvironment, seteaza acolo ce buffering doresti si renunta la deschiderea din load.

Daniel Buduru
 4/8/2010 3:23:23 PM
User is offlineoviciandrus
762 posts
www.comptech.ro
1st




Re: Problema Pageframe
 (N/A)
scrie

CURSORSETPROP('buffering',5,'imobile')
CURSORSETPROP('buffering',5,'clienti')

in loc de

CURSORSETPROP('buffering',5)
 4/8/2010 3:36:15 PM
User is offlineLordVlad
53 posts


Re: Problema Pageframe
 (N/A)
Bun, acum nu imi mai sunt salvate modificarile care le fac in cadrul textboxurilor cu controlsource dar nu imi mai sunt pastrate nici cele care le fac prin intermediul INSERT-ului. Si nici butonul de Salvare a modificarilor nu mai functioneaza :)

Va multumesc pentru ajutor!
 4/8/2010 3:50:31 PM
User is offlineoviciandrus
762 posts
www.comptech.ro
1st




Re: Problema Pageframe
 (N/A)
Spune-ne te rog ce scrie la :

- Click pe butonul de adaugare
- Click pe butonul de salvare
- Click pe butonul de anulare
 4/8/2010 4:08:02 PM
User is offlineLordVlad
53 posts


Re: Problema Pageframe
 (N/A)
Am pageframe in pageframe...deci Pageframe-ul mare va fi Pageframe1 iar in cadrul primei pagini din Pageframe1 am inca un pageframe cu alte 2 pagini (il vom numi Pageframe2)


Butonul de adaugare - Se afla in Pageframe2-Page1

thispf = thisform.PFAdmin.imobile.PFImobile.adaugare

SELECT "clienti"
go top
LOCATE FOR upper(alltr(clienti.ci)) == upper(alltr(thispf.ci.Value))
IF FOUND( )
id_proprietar = id_client
ELSE
INSERT INTO clienti (nume, adresa, localitate, judet, ci, tel) VALUES (thispf.nume.Value, thispf.adresa.Value, thispf.localitate.Value, thispf.judet.Value, thispf.ci.Value, thispf.telefon.Value)
id_proprietar = id_client
ENDIF

INSERT INTO imobile (id_propr, tip_imobil, tip_contr, zona, localitate, adresa, nr_etaj, suprafata, nr_camere, pret_imob, obs, vandut);
VALUES (id_proprietar, thispf.tip_imobil.Value, thispf.tip_contract.Value, thispf.zona.Value, thispf.loc_imobil.Value, thispf.adr_imobil.Value, thispf.nr_etaj.Value, VAL(thispf.suprafata.Value), VAL(thispf.nr_camere.Value), VAL(thispf.pret_imobil.Value), thispf.obs.Value, .F.)

MESSAGEBOX("Imobilul a fost adaugat")
thispf.nume.Value = ''
thispf.adresa.Value = ''
thispf.localitate.Value = ''
thispf.judet.Value = ''
thispf.ci.Value = ''
thispf.telefon.Value = ''
thispf.tip_imobil.Value = ''
thispf.tip_contract.Value = ''
thispf.zona.Value = ''
thispf.loc_imobil.Value = ''
thispf.adr_imobil.Value = ''
thispf.nr_etaj.Value = ''
thispf.suprafata.Value = ''
thispf.nr_camere.Value = ''
thispf.pret_imobil.Value = ''
thispf.obs.Value = ''
GO TOP
thisform.Refresh
 4/8/2010 4:09:21 PM
User is offlineLordVlad
53 posts


Re: Problema Pageframe
 (N/A)
Anularea nu se face cu un buton anume ci se face la form.destroy

DO WHILE TXNLEVEL( ) > 0
ROLLBACK
ENDDO


In load-ul formului am urmatoarele:
CLOSE ALL

SET MULTILOCKS ON
SET EXCLUSIVE OFF

OPEN DATABASE data1
use IMOBILE in 0
use CLIENTI in 0
CURSORSETPROP('buffering',5,'imobile')
CURSORSETPROP('buffering',5,'clienti')


Imi cer scuze pt postul dublu dar nu am putut sa scriu totul intr-un singur post...dadea eroare
 4/8/2010 4:09:34 PM
User is offlineLordVlad
53 posts


Re: Problema Pageframe
 (N/A)
Butonul de salvare - PageFrame1-Page2 (form cu textboxuri cu controlsource din tabela clienti)

BEGIN TRANSACTION
lSuccess = TABLEUPDATE(.T.,.F.)
IF lSuccess THEN
MESSAGEBOX("Modificarile au fost salvate")
ENDIF
END TRANSACTION
 4/8/2010 4:17:43 PM
User is offlineoviciandrus
762 posts
www.comptech.ro
1st




Re: Problema Pageframe
 (N/A)
Incearca asa

lSuccess = TABLEUPDATE(.T.,.F., 'IMOBILE')
 4/8/2010 4:46:17 PM
User is offlineLordVlad
53 posts


Re: Problema Pageframe
 (N/A)
Adaugand argumentul 'IMOBILE' sau 'CLIENTI' la TABLEUPDATE pe unde trebuie, totul merg cum doresc acum.
In schimb am mai dat de o problema...la stergerea din tabela. Comanda PACK doreste sa folosesc SET EXCLUSIVE ON, dar eu am fost nevoit sa il fac OFF la form.load pentru a putea obtine efectele ce le-am dezbatut mai devreme...cum pot face delete din baza de date dar sa si sterg cu totul inregistrarea (nu doar de fatada)?

Ce aveam inainte in butonul de stergere am bagatg in fisierul atasat. Nu am putut scrie direct aici din cauza unei erori ce tot apare...

Va multumesc mult pentru rabdare si ajutor!
Cu stima,
Vlad
 4/8/2010 4:50:12 PM
User is offlineDaniel Buduru
2335 posts
1st




Re: Problema Pageframe
 (N/A)
Nu a mers adaugarea de la mine, asa ca postul vine cam tarziu. Poate itotusi iti foloseste.

In vfp, oricarei  comenzi  care lucreaza cu o tabela, cursor, inregistrare sau camp trebuie sa i se precizeze aliasul sau zona cursorului asupra caruia se executa acea comanda.
Daca nu precizezi nimic, comanda se executa asupra tabelei deschise in zona selectata.
Te-ai lovit de problema asta inca de la inceput.

Comanda  USE tabela deschide tebela in zona curenta.
VFP are 255 de zone (area) in care poate deschide tabele (sau cursoare, sau view-uri).
O zona se selecteaza fie prin numarul ei:
SELECT 1
Fie prin aliasul cursorului deschis in acea zona:
SELECT clienti
Comanda
SELECT 0
selecteaza prima zona neocupata.

Comenzile
USE imobile
USE clienti
fac urmatorul lucru:
use imobile deschide tabela imobile in zona curenta.
use clienti inchide tabela imobile (care eset deschisa in zona curenta) si deschide tabela clienti in locul ei.

Ce s-a intamplat de la inceput:
Ai construit gridul cu builderul.
Builderul a pus tabela imobile (am inteles ca asta e in grid) in form.dataenvironment, astfel incat sa se deschida automat.
Fara alta comanda, la rularea formului aveai doar tabela imobile deschisa.
Cand ai pus in Load comanda
USE clienti
aceasta ti-a inchis tabela imobile - care era selectata - apoi a deschis in locul ei tabela clienti.
Comenzile
USE tabela IN 0 au deschis pe rand tabelele respective, tabela imobile fiind insa deschisa cu aliasul "A" - intrucat mai era deschisa odata cuu aliasul imobile - vfp face asta in mod automat.
In continuare, toate comenzile tale sunt fara subiect - nu precizezi aliasul sau zona in care sa lucreze.
Ca atare, comanda CURSORSETPROP('buffering',5) seteaza optimistic tabela buffering in zona curenta, care nu e neaparat tabela in care vrei sa pui table buffering.
Fie selectezi zona mai inainte:
SELECT imobile
CURSORSETPROP("buffering",5)
fie, asa cum ti-a spus Ovidiu, pui
CURSORSETPROP("buffering",5,"imobile")
Aceeasi problema o ai la salvare:

BEGIN TRANSACTION
lSuccess = TABLEUPDATE(.T.,.F.)   Tableupdate se executa asupra tabelei curente, si nu stii care este aceea.
IF lSuccess THEN  ........

Fie pui:
SELECT imobile
BEGIN TRANSACTION
lSuccess = TABLEUPDATE(.T.,.F.) 
.....

Fie
BEGIN TRANSACTION
lSuccess = TABLEUPDATE(.T.,.F.,'imobile') 
......

Daniel Buduru
 4/8/2010 5:04:20 PM
User is offlineoviciandrus
762 posts
www.comptech.ro
1st




Re: Problema Pageframe
 (N/A)
 LordVlad wrote
Adaugand argumentul 'IMOBILE' sau 'CLIENTI' la TABLEUPDATE pe unde trebuie, totul merg cum doresc acum.
In schimb am mai dat de o problema...la stergerea din tabela. Comanda PACK doreste sa folosesc SET EXCLUSIVE ON, dar eu am fost nevoit sa il fac OFF la form.load pentru a putea obtine efectele ce le-am dezbatut mai devreme...cum pot face delete din baza de date dar sa si sterg cu totul inregistrarea (nu doar de fatada)?

Ce aveam inainte in butonul de stergere am bagatg in fisierul atasat. Nu am putut scrie direct aici din cauza unei erori ce tot apare...

Va multumesc mult pentru rabdare si ajutor!
Cu stima,
Vlad


Nu se face stergere fizică la nivel de user final.
Stergerea fizică se face la nivel de administrator al bazei de date.

Daca pui SET DELETED ON
Inregistrarile sterse nu se mai "văd".
Apoi poti sa faci o opţiune separată pein care să scoţi efectiv inregistrările marcate pentru ştergere.
 4/8/2010 5:26:32 PM
User is offlineLordVlad
53 posts


Re: Problema Pageframe
 (N/A)
Facand simplu DELETE, textboxurile cu controlSource tot imi afiseaza inregistrarile "sterse". Ce solutie ar fi pt asta?
 4/9/2010 4:27:46 PM
User is offlineGrigore Dolghin
3592 posts
www.class-software.eu
1st






Re: Problema Pageframe
 (N/A)
Trebuie sa ai SET DELETED ON ca sa nu-ti mai apara inregistrarile sterse. Scrie comanda aia undeva la inceputul programului, ca sa fie activa tot timpul. Daca folosesti formuri cu sesiuni private de date (daca nu stii ce-i aia inseamna ca nu folosesti, deci poti sa ignori pasajul asta) trebuie sa executi comanda SET DELETED ON si in .Load-ul formurilor.

Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
  Visual FoxPro  Form-uri si generatoare de form-uri  Problema Pagefr...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement