Pagina 1 din 3

Registru de casa

Scris: Mie Aug 15, 2012 8:09 pm
de mesersmith
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:
ScreenShot050.jpg
Iata si un exemplu in care, in query, pe aceeasi linie, trebuie sa pun suma din ziua precedenta.
daily cash.accdb

Re: Registru de casa

Scris: Mie Aug 15, 2012 9:53 pm
de cvmircea
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.

Re: Registru de casa

Scris: Mie Aug 15, 2012 9:55 pm
de EmanuelSerban
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:

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;
Vezi și fișierul atașat.

Re: Registru de casa

Scris: Mie Aug 15, 2012 10:24 pm
de mesersmith
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.

Re: Registru de casa

Scris: Joi Aug 16, 2012 1:32 pm
de EmanuelSerban
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...

Re: Registru de casa

Scris: Dum Aug 26, 2012 6:55 pm
de Tzica
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 ? :oops:

Re: Registru de casa

Scris: Lun Aug 27, 2012 8:02 pm
de Tzica
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

Scris: Dum Oct 07, 2012 6:45 pm
de Tzica
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.
:roll:

Re: Registru de casa

Scris: Lun Oct 08, 2012 11:22 am
de newbie
Pentru a imprima mai multe copii ale aceluiasi raport:

Cod: Selectaţi tot

DoCmd.SelectObject acReport,"NumeleRaportuluiTau", True 

DoCmd.Printout ,,,,5, false
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

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

Scris: Lun Oct 08, 2012 6:54 pm
de newbie
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