Search  
Saturday, February 11, 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  Stergere din do...
 Stergere din doua tabele
 
 2/14/2009 7:33:52 PM
User is offlinebrebenel
5 posts


Stergere din doua tabele
 (N/A)

Am doua tabele: Tabela1.dbf si Tabela2.dbf. Unei inregistrari din Tabela1, ii corespund mai multe inregistrari din Tabela2.

Cum se poate sterge inregistrarea din Tabela1 si celelalte inregistrari corespondente din Tabela2.

Mersi mult

 2/15/2009 10:42:16 AM
User is offlineanonymous
0 posts


Re: Stergere din doua tabele
 (United Kingdom)
Ai mai multe metode la dispozitie.
Poti sa folosesti Referential Integrity.
Poti sa folosesti TRIGGER-ul de DELETE al Tabela1 scriind cod de genul urmator in metoda triggerului:
DELETE FROM Tabela2 WHERE IdTabela1 = Tabela1.IdTabela1

Si a treia metoda ar fi sa stergi inregistarile din Tabela2 manual inainte sa stergi inregistrarile din Tabela1, iar aici depinde cum for fi sterse intrebarile din Tabela1. De exemplu poti sa faci ceva complicat de genul: DELETE FROM Tabela2 WHERE IdTabela1 IN (SELECT IdTabela1 FROM Tabela1 WHERE &ConditieDeFiltrare), iar dupa aceasta comanda faci delete-ul in Tabela1 folosind aceeasi conditie de filtrare: DELETE FROM Tablela1 WHERE &ConditieDeFiltrare.

Daca nu reusesti sa alegi o varianta spune exact ce urmeaza sa faci si vedem ce solutie ar fi mai simpla pentru tine.
 2/15/2009 11:11:42 AM
User is offlinebrebenel
5 posts


Re: Stergere din doua tabele
 (N/A)
Practic, am tabelele: Facturi.dbf si Plati.dbf cu urmatoarea structura:
Facturi.dbf:
Indicativ(c,10) - Indicativ factura
Sec(n,2) - Cod sectie
Tip(n,2) - Cod tip cheltuiala
Cfz(c,4) - Cod furnizor
Daf(D,8) - Data facturarii
Dataint(D,8) - Data intrarii in unitate
Nrf(c,10) - Numarul facturii
Vaf(n,15,2) - Valoarea facturii
Cnt(c,10) - Numarul de contract
Ancnt(c,4) - Anul contractului
 
Plati.dbf
Indicativ(c,10)
Sec(n,2)
Tip(n,2)
Cfz(C,4)
Nrf(C,10)
Nop(C,8) - Numar ordin de plata
Dop(D,8) - data efectuarii operatiunii
Vap(n,15,2) - valoarea platita
Fel(C,3) - Cod - felul platii
In tabela intrari.dbf inregistrez fiecare factura sosita iar in tabela Plati.dbf inregistrez platile efectuate si pot avea un numar n de inregistrari pentru o factura primita daca plata nu se efectueaza integral. Eu vreau, cand doresc sa sterg inregistrare(o factura) din tabela Facturi.dbf, automat sa stearga si inregistrarile aferente din tabela plati.dbf
 
Mersi mult Cristi 
 2/15/2009 1:12:29 PM
User is offlinegldesign
394 posts
3rd


Re: Stergere din doua tabele
 (N/A)

Eu folosesc urmatoarea solutie.

Cand introduc o factura (fie primita fie emisa de mine) am un camp id in care introduc o valoare unica (incrementez valoare campului cu 1 la fiecare factura).

In tabela plati am un camp idfact care are valoarea id din facturi (pot sa am 100 de plati pt. factura respectiva am acealasi idfact).

Daca vreau sa sterg o factura, vad ce id are factura, ma duc in plati sterg inregistrarile pt idfact=id-ul respectiv si apoi  sterg inregistrarea din facturi.

Daca vrei sa aplici aceasta solutie va trebui sa-ti modifici structurile tabelelor si programul (unde salvezi facturile, respectiv platile) 

 2/15/2009 3:24:43 PM
User is offlinebrebenel
5 posts


Re: Stergere din doua tabele
 (N/A)
Ok , am mai introdus in tabela Facturi.dbf, inca un camp(idfactura(integer,autoinc.)) iar in tabela plati.dbf un camp(idplata(integer)). Acum nu inteleg , dupa ce localizez factura pentru care fac plata, cum incrementez in tabela plati.dbf acelasi numar cu id-ul din facturi.dbf.
 2/15/2009 7:53:13 PM
User is offlinegldesign
394 posts
3rd


Re: Stergere din doua tabele
 (N/A)

Daca ai localizat factura pt. care faci plata, in tabela plati cand faci plata, faci si (pe langa celelalte salvari in campurile tabelei)

 repl idplata with facturi.id

nu inteleg ce vrei sa incrementezi. Toate inregistrarile de plati pt. aceasi factura au acelasi idplata (egal cu id-ul facturii)

 

 2/15/2009 8:41:53 PM
User is offlinebenson
27 posts


Re: Stergere din doua tabele
 (N/A)

ok, acum am inteles ideea, si acum pot folosi DELETE FROM Tabela2 WHERE IdTabela1 IN (SELECT IdTabela1 FROM Tabela1 WHERE &ConditieDeFiltrare) dupa care sterg si inregistrarea din tabela facturi. Aici m-am incurcat , eu grupam inregistrarile din cele doua tabele  folosindu-ma de campul Indicativ.

Inca odata , mersi mult

  Visual FoxPro  Baze de date, tabele, view-uri si indecsi  Stergere din do...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement