Search  
Thursday, May 24, 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
  FoxPro  FoxPro 2.x DOS  Replace FoxPro ...
 Replace FoxPro 2.x
 
 6/6/2011 1:37:34 PM
User is offlinefordrosu
2 posts


Replace FoxPro 2.x
 (N/A)
Am facut un mic programel care sa inlocuiasca spatiile libere dintro baza de date cu numere din alta baza.
Programul arata astfel
CLOSE ALL
USE d:\db1 IN a
USE d:\db2 IN b

IF a.cui=b.cui
replace a.te1 WITH b.tel1 FOR EMPTY(a.tel1)
ENDIF

Programul ruleaza insa nu modifica cu nimic db1.
Ce imi scapa?
Va multumesc !
 6/6/2011 2:05:19 PM
User is offlineDaniel Buduru
2333 posts
1st




Re: Replace FoxPro 2.x
 (N/A)
Dupa cum ai scris programelu', esti la primul pas in FoxPro. FoxPro a fost inlocuit prin 1995 de VFP, care acum e inmormantat si el de MS la versiunea 9.0.
De ce incepi sa programezi intr-un mediu mort de mai bine de 15 ani si care nu ruleaza fara artificii pe sistemele de operare actuale?

Raspunsul la interbarea ta: iti scapa parcurgerea tabelelor. Iti trebuie o legatura intre cele doua tabele, pe campul cui, care pare a fi comun.
Poti face un index pe db2.cui si s astabilesti o relatie intre db1 si db2, apoi sa dai o comanda replace all cu conditiile tale.
Sau, si mai simplu, o comanda update sql:

Update db1 set tel1=db2.tel1 from db2 where db2.cui=db1.cui and empty(db1.tel1)



Daniel Buduru
 6/6/2011 2:39:12 PM
User is offlinefordrosu
2 posts


Re: Replace FoxPro 2.x
 (N/A)
In primural rand ca multumesc pentru raspunsul prompt.
Din pacate nu pot folosi SQL deoarece baza de date care incerc sa o mdific este folosita de un program facut in foxpro versiunea sub dos.
Imi puteti spune mai exact cum fac acel index?




 6/6/2011 2:46:52 PM
User is offlineDaniel Buduru
2333 posts
1st




Re: Replace FoxPro 2.x
 (N/A)
Ai incercat comanda pe care ti-am dat-o si nu merge? Ce eroare iti da?

Daniel Buduru
 6/6/2011 2:55:58 PM
User is offlineDoru Constantin
321 posts
3rd




Re: Replace FoxPro 2.x
 (N/A)
Ma bag doar ca sa spun ca UPDATE ... SET ... WHERE este suportata de VFP doar in v9 (poate si v8, nu mai stiu). Un lucru este clar, sintaxa in FDP este:

UPDATE ON <field> FROM <file>
    REPLACE <field1> WITH <expr1>
    [, <field2> WITH <expr2> ...]
    [RANDOM]

 6/6/2011 3:28:29 PM
User is offlinerobert_anisoiu
28 posts


Re: Replace FoxPro 2.x
 (N/A) Modified By robert_anisoiu  on 6/6/2011 3:30:50 PM)
 fordrosu wrote
Am facut un mic programel care sa inlocuiasca spatiile libere dintro baza de date cu numere din alta baza.
Programul arata astfel
CLOSE ALL
USE d:\db1 IN a
USE d:\db2 IN b

IF a.cui=b.cui
replace a.te1 WITH b.tel1 FOR EMPTY(a.tel1)
ENDIF

Programul ruleaza insa nu modifica cu nimic db1.
Ce imi scapa?
Va multumesc !

Incearca asa:
CLOSE ALL
USE d:\db1 IN 0
USE d:\db2 IN 0
SELECT db1
INDEX ON cui TAG cui1
SET ORDER TO cui1

SELECT db2
INDEX ON cui TAG cui2
SET ORDER TO cui2

SELECT db1
GO TOP
DO WHILE !EOF()
l_cui = cui
IF EMPTY(te1)
SELECT db2
IF SEEK(l_cui)
l_te1 = te1
ELSE
l_te1 = ""
ENDIF
SELECT db1
REPLACE te1 WITH l_te1
ENDIF
SELECT db1
SKIP
ENDDO
 6/6/2011 3:48:29 PM
User is offlineDaniel Buduru
2333 posts
1st




Re: Replace FoxPro 2.x
 (N/A)
@Doru
Ai dreptate, in FoxPro nu este implementat Update SQL, numai Select SQL.
In VFP exista de la VFP3.0.

@fordrosu

Varianta cu Replace este urmatoarea:

Select 0
Use db2
Index on cui tag cui
Select 0
Use db1
Set relation to cui into db2
replace all tel1 with db2.tel1 for empty(tel1) and cui=db2.cui







Daniel Buduru
  FoxPro  FoxPro 2.x DOS  Replace FoxPro ...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement