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  Baze de date, tabele, view-uri si indecsi  transfer dintr-...
 transfer dintr-o tabela in alta
 
 5/26/2010 12:26:29 PM
User is offlinedarky85
119 posts
5th


transfer dintr-o tabela in alta
 (N/A)
Salut Am 2 tabele facturi si stoc cum fac sa imi trimita datele din facturi in stoc tinand cont ca in stoc nu am toate campurile din factura. Multumesc
 5/26/2010 12:39:20 PM
User is offlineEugen Gliga
1052 posts
1st




Re: transfer dintr-o tabela in alta
 (N/A)
Insert Into TABELA1 Select Field1, Field2... From Tabela2

sau

 Use Tabela1
Append From Tabela2



 5/26/2010 1:04:33 PM
User is offlinedarky85
119 posts
5th


Re: transfer dintr-o tabela in alta
 (N/A)
imi da urmatoare eroare "The number of SELECT values doesn't match the number of insert colums"
 5/26/2010 1:16:32 PM
User is offlinedarky85
119 posts
5th


Re: transfer dintr-o tabela in alta
 (N/A)
Mai am o problema ma pune sa deschid eu tabela 2
 5/26/2010 8:27:19 PM
User is offlineEugen Gliga
1052 posts
1st




Re: transfer dintr-o tabela in alta
 (N/A)
Incearca asa:

Insert Into TABELA1 (Field1,Field2,...) Select Field1, Field2... From Tabela2


Te pune s-o deschizi, probabil pt ca nu o gaseste in calea de cautare. Incearca sa-i dai calea completa sau sa o deschizi in alta arie.



 5/31/2010 8:52:11 AM
User is offlineOvidiu Dobie
105 posts
5th


Re: transfer dintr-o tabela in alta
 (N/A)
Am folosit si eu hint-ul prezentat in acest thread. Am asociat unui buton urmatorul cod:

CD dataold
USE facturi_tr IN 1 ALIAS facturi_vechi
CD ..
CD data
USE facturi_tr IN 2 ALIAS facturi_noi
CD ..
SELECT facturi_vechi
DELETE ALL
PACK

INSERT INTO facturi_noi (nr_factura, seria_factura, data_factura, cod_client);
SELECT nr_factura, seria_factura, data_factura, cod_client;
FROM facturi_vechi

SELECT 1
USE

SELECT 2
USE

Acum problema e in felul urmator: cand pornesc aplicatia din VFP totul e ok, merge perfect importul din fisierul vechi in fisierul nou.
Cand pornesc aplicatia cu ajutorul exe-ului generat imi da urmatoarea eroare:
"Cannot link the table '....facturi_tr.dbf' to this database: duplicate or missing fields. Would you like to try to locate the owning database or delete the link (and free the table)?"
Chestia e ca in folderul dataold am vechea versiune a tabelelor si a bazei de date iar in folderul data am noua versiune, care, da e adevarat, facturi_tr.dbf contine o noua coloana, un nou camp.
In eroare primesc mesajul duplicate or missing fields... Dar adevarul e ca amandoua sunt adevarate... Duplicate, pentru ca fiind aceeasi baza de date nu am schimbat numele tabelelor...
Iar daca dau delete the link and free the table primesc eroarea ca nu gaseste variabila seria_factura si mi-am dat seama ca daca am facut free pe tabela, numele campurilor a fost modificat la max.10 caractere ... Acum asta nu e problema am facut free pe tabela, ca oricum testele din exe le-am facut intr-un folder temporar de teste unde am copiat folder-ele data si dataold...
Deci ... de ce din VFP merge perfect transferul datelor dintr-o tabela in alta, iar din aplicatia pornita cu exe, fara a fi pornit mediul VFP 9.0, primesc aceasta eroare... ?


Ovidiu Dobie
 5/31/2010 10:29:28 AM
User is offlineDaniel Buduru
2335 posts
1st




Re: transfer dintr-o tabela in alta
 (N/A)
In vfp ambele baze de date se afla in calea de access, iar in exe doar unul din foldere este in calea de access - cel cu baza de date noua.
Dat fiind ca ambele baze de date au acelasi nume, e necesara selectarea bazei de date corespunzatoare tabelei.
O solutie este redenumirea vechii baze de date (trebuie redenumite toate trei fisierele bazei de date: .dbc, .dct, .dcx).
Solutia pe care am adoptat-o eu (cand inca mai lucram cu baze de date vfp) a fost - foarte sumar - ceva de genul urmator:

cDataSource=getfile('dbc','Selectati sursa')
cDataDest=getfile('dbc','Selectati destinatia')
IF DBUSED(cDataSource)
   SET DATABASE TO (cDataSource)
   CLOSE DATABASE
ENDIF

IF DBUSED(cDataDest)
   SET DATABASE TO (cDataDest)
   CLOSE DATABASE
ENDIF

OPEN DATABASE (cDataDest)
nTables=ADBOBJECT(aTables,'TABLE')
CLOSE DATABASE
FOR  lni=1 TO nTables
   cTable=aTables(lnI)
   OPEN DATABASE (cDataSource)
   If Empty(DBGetProp(cTable,"TABLE","PATH"))
      MESSAGEBOX('Tabela '+ cTable+' nu exista in sursa')
      LOOP
   Endif
   USE (cTable) IN (SELECT(cTable))
   SELECT * FROM (cTable) WHERE DELETED = .F. INTO CURSOR __crssource NOFILTER
   USE IN (SELECT(cTable))
   CLOSE DATABASE
   OPEN DATABASE (cDataDest)
   USE (cTable) IN (SELECT(cTable))
   APPEND FROM DBF('__crssource')
   USE IN (SELECT(cTable))
   CLOSE DATABASE
NEXT lni
  
Codul complet este intr-o clasa, si e destul de stufos - stabileste ordinea de import, poate importa numai inregistrarile a caror cheie primara nu se regaseste in noua baza ed date si face un log cu inregistrarile cu probleme.

Daniel Buduru
  Visual FoxPro  Baze de date, tabele, view-uri si indecsi  transfer dintr-...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement