Registru de casa
- mesersmith
- Mesaje: 2088
- Membru din: Sâm Oct 23, 2010 6:44 am
- Localitate: calarasi
- Contact:
Registru de casa
Trebuie sa fac un registru de casa, un modul separat in bazele mele.
Faza este ca in registrul de casa, suma banilor intrati in ziua precedenta se aduna cu suma zilei curente.
Problema apare cand sunt zile libere si nu sunt inregistrari deloc.
Cum pot sa adun ziua precedenta, care poate fi cu oricate zile in urma, cu suma din ziua curenta, numita in query SumOfSum?
Cam asa trebuie sa arate:
Iata si un exemplu in care, in query, pe aceeasi linie, trebuie sa pun suma din ziua precedenta.
Faza este ca in registrul de casa, suma banilor intrati in ziua precedenta se aduna cu suma zilei curente.
Problema apare cand sunt zile libere si nu sunt inregistrari deloc.
Cum pot sa adun ziua precedenta, care poate fi cu oricate zile in urma, cu suma din ziua curenta, numita in query SumOfSum?
Cam asa trebuie sa arate:
Iata si un exemplu in care, in query, pe aceeasi linie, trebuie sa pun suma din ziua precedenta.
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.
Re: Registru de casa
Vrei neaparat ca acestea sa fie intr-un query sau ii ok daca ai un raport? Nu stiu cum ai organizate tabelele in baza ta de date dar sa presupunem ca ai un tabel cu incasari si un tabel cu cheltuieli, faci un formular cu doua cimpuri : DataInceput si DataSfirsit si un buton care iti deschide raportul .
In acest raport pui un subraport cu soldul pe care il calculezi Suma din incasari - Suma din Cheltuieli unde data este mai mica decit DataStart.
in Raport aduci intrarile si iesirile dintre cele doua date iar pe ultima coloana la diferenta adaugi si soldul din subraport. Nu am incercat aceasta varianta dar ced ca ar trebui sa functioneze.
In acest raport pui un subraport cu soldul pe care il calculezi Suma din incasari - Suma din Cheltuieli unde data este mai mica decit DataStart.
in Raport aduci intrarile si iesirile dintre cele doua date iar pe ultima coloana la diferenta adaugi si soldul din subraport. Nu am incercat aceasta varianta dar ced ca ar trebui sa functioneze.
-
- Mesaje: 38
- Membru din: Mie Apr 27, 2011 3:06 pm
- Localitate: Pitești
Re: Registru de casa
Folosești două SubQuery-uri pentru a obține:
1. Ziua Precedentă (PreviousDay), selectând cea mai mare (MAX) zi, mai mică decât ziua curentă (< CurrentDay)
2. Soldul Zilei Precedente (SumOfPreviousDay), selectând Suma pentru Ziua Precedentă (rezultată din SubQuery-ul de la punctul 1.)
Select-ul final arată așa:
Vezi și fișierul atașat.
1. Ziua Precedentă (PreviousDay), selectând cea mai mare (MAX) zi, mai mică decât ziua curentă (< CurrentDay)
2. Soldul Zilei Precedente (SumOfPreviousDay), selectând Suma pentru Ziua Precedentă (rezultată din SubQuery-ul de la punctul 1.)
Select-ul final arată așa:
Cod: Selectaţi tot
SELECT
CurrentDayCashIn.data AS CurrentDay
,SUM(CurrentDayCashIn.Sum) AS SumOfCurrentDay
,(SELECT
MAX([cash in].data)
FROM [cash in]
WHERE [cash in].data < CurrentDayCashIn.data) AS PreviousDay
,(SELECT
SUM(PreviousDayCashIn.Sum)
FROM [cash in] PreviousDayCashIn
WHERE PreviousDayCashIn.data = (SELECT
MAX([cash in].data)
FROM [cash in]
WHERE [cash in].data < CurrentDayCashIn.data)) AS SumOfPreviousDay
FROM [cash in] AS CurrentDayCashIn
GROUP BY CurrentDayCashIn.data;
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.
- mesersmith
- Mesaje: 2088
- Membru din: Sâm Oct 23, 2010 6:44 am
- Localitate: calarasi
- Contact:
Re: Registru de casa
Multumesc mult, exact asta vroiam sa-mi iasa.
Observ ceva absolut nou fata de tot ce stiam eu in access: codurile pe care le-ai folosit in query, nici nu stiam ca se poate.
Multumesc.
Observ ceva absolut nou fata de tot ce stiam eu in access: codurile pe care le-ai folosit in query, nici nu stiam ca se poate.
Multumesc.
-
- Mesaje: 38
- Membru din: Mie Apr 27, 2011 3:06 pm
- Localitate: Pitești
Re: Registru de casa
Query-urile au în spate cod în limbaj SQL.
Limbajul SQL reprezintă standard de pornire pentru orice sistem de gestiune al bazelor de date relaționale, indiferent că este vorba de Microsoft Access, Microsoft SQL Server, Oracle Database, Oracle MySQL, etc...
Limbajul SQL reprezintă standard de pornire pentru orice sistem de gestiune al bazelor de date relaționale, indiferent că este vorba de Microsoft Access, Microsoft SQL Server, Oracle Database, Oracle MySQL, etc...
Re: Registru de casa
Buna ziua,
eu am incercat alta abordare, si fireste m-am blocat.Pe scurt e musai cu doua tabele (incasari & plati) ?? ori se poate un union querry si in abordarea mea ?
eu am incercat alta abordare, si fireste m-am blocat.Pe scurt e musai cu doua tabele (incasari & plati) ?? ori se poate un union querry si in abordarea mea ?
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.
Re: Registru de casa
Scuze, am mai gasit o bubitza...daca am o singura operatiune (numai o incasare sau numai o plata) intr-o zi, nu afiseaza nimic la soldul zilei.
Re: Registru de casa
1.
"daca am numai o incasare sau numai o plata...nu afiseaza nimic"
Se rezolva cu ajutorul functiei Nz adica, =Nz(Sum([...]));
2.
Ca sa nu aglomerez forumul (intrebarea tine de VBA), si avand respectiva BD ca si material de lucru, o sa o pun aici (moderatorii o pot muta ).
Anumite documente musai sa fie tiparite in doua - trei exemplare, si chiar sa scrie pe ele "exemplar 1", "exemplar2", "exemplar 3" (deci un singur document, acelasi, cu un label sau un control box, pe care sa il completeze un cod VBA, care dupa fiecare print sa completeze cifra).Am incercat eu un DoCmd..dar..fireste ca nu functioneaza.Am"descoperit" pe net un cod, elegant cu un contor,dar este pentru word sau excel.
"daca am numai o incasare sau numai o plata...nu afiseaza nimic"
Se rezolva cu ajutorul functiei Nz adica, =Nz(Sum([...]));
2.
Ca sa nu aglomerez forumul (intrebarea tine de VBA), si avand respectiva BD ca si material de lucru, o sa o pun aici (moderatorii o pot muta ).
Anumite documente musai sa fie tiparite in doua - trei exemplare, si chiar sa scrie pe ele "exemplar 1", "exemplar2", "exemplar 3" (deci un singur document, acelasi, cu un label sau un control box, pe care sa il completeze un cod VBA, care dupa fiecare print sa completeze cifra).Am incercat eu un DoCmd..dar..fireste ca nu functioneaza.Am"descoperit" pe net un cod, elegant cu un contor,dar este pentru word sau excel.
Re: Registru de casa
Pentru a imprima mai multe copii ale aceluiasi raport:
Si undeva pe internet gasisem asta, acum citva timp, dar cu regret nu iti pot spune unde. Codul de mai jos il folosesc si eu intr-o baza de date access.
Cod: Selectaţi tot
DoCmd.SelectObject acReport,"NumeleRaportuluiTau", True
DoCmd.Printout ,,,,5, false
Cod: Selectaţi tot
Print multiple copies of a report in Microsoft Access
The situation may arise where it is always necessary to print out a specified number of copies of a Microsoft Access report. If you want to print out multiple copies of a report, then you can use the PrintOut Method, provided that the report is the active object, i.e. you need to firstly open the report in Preview mode.
Private Sub [Your_Command_Button]_Click()
'Open report in Preview mode
DoCmd.OpenReport "[Your_Report_Name_Goes_Here]", acViewPreview
'Print out specified number of report copies
DoCmd.PrintOut , , , , 2
End Sub
Another approach to this is to use a function, that incorporates a loop, that will then accept the Microsoft Access report name and specified number of report copies to be printed:
Public Function PrintMultipleCopies(strReportName As String, _
bytNumberOfCopies As Byte)
Dim bytCounter As Byte
For bytCounter = 1 To bytNumberOfCopies
DoCmd.OpenReport strReportName
Next bytCounter
End Function
You can then call this function, from a command button in your Microsoft Access Form for example, by using:
Private Sub [Your_Command_Button]_Click()
'Prints out named [report x amount of copies] required
Call PrintMultipleReports("[Your_Report_Name_Goes_Here]", 2)
End Sub
Re: Registru de casa
am facut un exemplu rapid, dar nu am apucat sa il testez.
te rog testeaza si spune daca merge au ba
L.E. Am gasit asta Contor imprimare
te rog testeaza si spune daca merge au ba
L.E. Am gasit asta Contor imprimare
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.