Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Whisky for Mac

Xiaomi 14 Gpay

Izolare zid exterior de scandura

Dezinstalare drivere W11 23H3
 Recomandare masina de spalat fiab...

BSOD din cauza Intel Audio DSP dr...

De ce sunt oamenii nostalgici

Cum vand casa fara factura Hidroe...
 Scor FICO minim

Tonometru compensat CAS?

polita RCA ONLINE

Va rog recomandati echipa serioa...
 Termostat frigider - verificare

Mai au PC-urile vreun viitor?

Centrala termica immergas

Amenda in Lipsa ?
 

Access 97 si VBA - vreau sa dau valori unei variabile intr-un ciclu For

- - - - -
  • Please log in to reply
5 replies to this topic

#1
JJOne

JJOne

    Senior Member

  • Grup: Senior Members
  • Posts: 2,021
  • Înscris: 22.08.2006
Se dau 2 tabele in relatie one to many, si un form care trebuie sa exporte in fisiere separate valorile din al doilea tabel, in functie de valoarea cheii primare din primul tabel.
Am reusit sa fac exportul, desi sunt incepator rau in Access, insa numai alegand manual pe rand valorile cheii din primul tabel.
As vrea sa realizez un ciclu for, in care valoarea variabilei de filtrare sa circule singura prin valorile cheii primare, astfel incat aceasta actiune sa se realizeze dintr-un singur click. Nu reusesc insa sa-mi dau seama cum se face. Va rog sa ma ajutati, daca puteti, si va multumesc anticipat.

#2
Yoda

Yoda

    Eternal padawan

  • Grup: Senior Members
  • Posts: 9,467
  • Înscris: 04.10.2002

 JJOne, on Dec 9 2006, 16:25, said:

Se dau 2 tabele in relatie one to many, si un form care trebuie sa exporte in fisiere separate valorile din al doilea tabel, in functie de valoarea cheii primare din primul tabel.
Am reusit sa fac exportul, desi sunt incepator rau in Access, insa numai alegand manual pe rand valorile cheii din primul tabel.
As vrea sa realizez un ciclu for, in care valoarea variabilei de filtrare sa circule singura prin valorile cheii primare, astfel incat aceasta actiune sa se realizeze dintr-un singur click. Nu reusesc insa sa-mi dau seama cum se face. Va rog sa ma ajutati, daca puteti, si va multumesc anticipat.


N-am reusit sa inteleg exact ce vrei.  :)
Hai s-o luam pe exemplu concret. Ai doua tabele:

tblDepartamente:
ID - autonumber
Departament - text

tblAngajati:
ID - autonumber
ID_Dep - integer (corespondent one-to-many pentru tblDepartamente.ID)
Nume - text


Ce vrei exact sa exporti, raportat la exemplul de mai sus? Numele angajatilor dintr-un anumit departament?

#3
JJOne

JJOne

    Senior Member

  • Grup: Senior Members
  • Posts: 2,021
  • Înscris: 22.08.2006
Exact asta as vrea, dar in mai multe fisiere de genul: "Angajati departament1.txt", "Angajati departament2.txt", etc.\
Problema e ca nu stiu sa accesez pe o variabila in VB ID-urile din tabela tblDepartamente, sa le folosesc pt. control al ciclului for.

#4
Yoda

Yoda

    Eternal padawan

  • Grup: Senior Members
  • Posts: 9,467
  • Înscris: 04.10.2002

 JJOne, on Dec 11 2006, 16:46, said:

Exact asta as vrea, dar in mai multe fisiere de genul: "Angajati departament1.txt", "Angajati departament2.txt", etc.\
Problema e ca nu stiu sa accesez pe o variabila in VB ID-urile din tabela tblDepartamente, sa le folosesc pt. control al ciclului for.


Incearca ceva de genul:

Sub ExportAngajati()

	Dim rsDepartamente As Recordset
	Set rsDepartamente = dbMyMdb.OpenRecordset("SELECT * FROM tblDepartamente", dbOpenDynaset)
 
	Do While rsDepartamente.EOF = False	   
		CreateFile(rsDepartamente!ID, rsDepartamente!Departament)	  
		rsDepartamente.MoveNext
	Loop

End Sub


Sub CreateFile( DepartamentID as Integer, DepartamentName as String)
	  Dim rsAngajati As Recordset
	  Set rsAngajati = dbMyMdb.OpenRecordset("SELECT * FROM tblAngajati WHERE ID_Dep=" &  DepartamentID , dbOpenDynaset)

	  'aici loopezi recordsetul si iti construiesti fisierul de exportat. 
	  'Numele lui il ai ca parametru mai sus (DepartamentName)
	  'sper ca ai inteles, daca nu intreaba

End Sub

Edited by Yoda, 11 December 2006 - 21:30.


#5
JJOne

JJOne

    Senior Member

  • Grup: Senior Members
  • Posts: 2,021
  • Înscris: 22.08.2006
Multumesc mult, nu stiam prima parte cu OpenRecordset si nici accesarea unui singur camp dintr-o linie de tabel. Am incercat si a mers ceva de tipul propus de tine.

Inca  ceva: Cu TransferText, pot sa creez cate un fisier pt. fiecare recordset de acest gen. Daca imi fac selectia initiala doar pt. adaugirile din banca de date, exista vreo functie prin care, in loc sa stearga fisierul inainte de scriere, sa adauge noile inregistrari la sfarsitul acestuia?

O varianta clara ar fi sa si import fisierul vechi prin aceeasi metoda transfertext, si sa adaug la el noile linii in VB/Access, iar apoi sa-l rescriu, insa as vrea sa stiu daca exista vreo metoda mai directa.

#6
Yoda

Yoda

    Eternal padawan

  • Grup: Senior Members
  • Posts: 9,467
  • Înscris: 04.10.2002

 JJOne, on Dec 12 2006, 12:31, said:

Multumesc mult, nu stiam prima parte cu OpenRecordset si nici accesarea unui singur camp dintr-o linie de tabel. Am incercat si a mers ceva de tipul propus de tine.

Inca  ceva: Cu TransferText, pot sa creez cate un fisier pt. fiecare recordset de acest gen. Daca imi fac selectia initiala doar pt. adaugirile din banca de date, exista vreo functie prin care, in loc sa stearga fisierul inainte de scriere, sa adauge noile inregistrari la sfarsitul acestuia?

O varianta clara ar fi sa si import fisierul vechi prin aceeasi metoda transfertext, si sa adaug la el noile linii in VB/Access, iar apoi sa-l rescriu, insa as vrea sa stiu daca exista vreo metoda mai directa.

Nu merge sa adaugi inregistrari cu docmd.TransferText.

Creaza o functie de genul:

Open "C:\TEMP\Export.txt" For Append As #1

rst.MoveFirst

Do While rst.EOF = False

'  use code to concatenate the values from
'  all the fields in the recordset into a single
'  string variable strOutput. Example with
'  using arbitrary widths of 20 and 10 for
'  the first two fields):

  strOutput = Left(rst.Fields(0).Value & Space(20), 20) & _
  Left(rst.Fields(1).Value & Space(10), 10)

  Print #1, strOutput
  rst.MoveNext

Loop

rst.Close
Set rst = Nothing

Close #1

Edited by Yoda, 12 December 2006 - 18:00.


Anunturi

Chirurgia endoscopică a hipofizei Chirurgia endoscopică a hipofizei

"Standardul de aur" în chirurgia hipofizară îl reprezintă endoscopia transnazală transsfenoidală.

Echipa NeuroHope este antrenată în unul din cele mai mari centre de chirurgie a hipofizei din Europa, Spitalul Foch din Paris, centrul în care a fost introdus pentru prima dată endoscopul în chirurgia transnazală a hipofizei, de către neurochirurgul francez Guiot. Pe lângă tumorile cu origine hipofizară, prin tehnicile endoscopice transnazale pot fi abordate numeroase alte patologii neurochirurgicale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate