2017-04-26 3 views
0

Ich bin relativ neu zu MS Access SQL in VB6, und auf der Suche nach einer Antwort Ich habe hier gerade eine Frage, die fast passen, was ich brauche (Summe tägliche Summe nach Kategorie in MSSQL). Aber ich kann immer noch nicht herausfinden, wie ich es in meinem Code implementiere, ich bin mir ziemlich sicher, dass mir ein Befehl oder eine Bestellung fehlt.Summe tägliche Summen plus Gesamtsumme aus mehreren Tabellen in MSSQL

Das ist, was ich habe:

Qry = "SELECT pv_S.Id, Agenda.Company, pv_S.Fecha, Products.Descripción, " _ 
     & "pv_S.Cant, pv_S.PV, pv_S.Pagado, pv_S.User " _ 
     & "FROM Products " _ 
     & "INNER JOIN (Agenda INNER JOIN pv_S " _ 
     & "ON Agenda.CustomerID = pv_S.CustomerID) " _ 
     & "ON Products.ProdId = pv_S.ProdId " _ 
     & "WHERE pv_S.Fecha BETWEEN #" & Format(FromDate, "MM/DD/YYYY") & "# " _ 
     & "AND #" & Format(ToDate, "MM/DD/YYYY") & "# " _ 
     & "AND pv_S.User = '" & cboCombos(2).Text & "' " _ 
     & "ORDER BY Fecha" 

Das ist, was ich brauche:

Report From: 1/1/17 To: 3/1/17 


    FECHA USER Cant 
    1/1/17 Sam 50 
    1/1/17 Sam 60 
    1/1/17 Sam 20 
      Tot 130 

    2/1/17 Sam 80 
    2/1/17 Sam 80 
      Tot 160 

    3/1/17 Sam 50 
    3/1/17 Sam 10 
    3/1/17 Sam 20 
    3/1/17 Sam 70 
      Tot 150 

      GTot 440 

Was ich tue, ist schrecklich, durch die Datenbank Looping verrückt ist. Ich weiß, dass es einen leichten Weg geben sollte und muss.

Antwort

0

Sie sagen 'Summe täglich nach Kategorie'. Welche Kategorie? Ihr Ausgabebeispiel zeigt 3 Felder von pv_S, aber keine von Agenda und Produkten.

Wenn Sie Details aus allen 3 Tabellen zusammen mit Summenberechnungen anzeigen möchten, erstellen Sie einen Access-Bericht. Die RecordSource wäre eine Abfrage der Rohdatensätze. Verwenden Sie den Bericht zum Gruppieren und Sortieren von Konstruktionsmerkmalen. Fügen Sie einen Gruppenabschnitt für jedes Feld Ihrer 'Kategorie' hinzu. Fügen Sie ein Textfeld in die Gruppenfußzeile ein und melden Sie die Fußzeile mit dem Ausdruck: =Sum([Cant]).

Wenden Sie Datums- und Benutzerfilterkriterien auf den Bericht an. Ich verwende niemals dynamisch parametrisierte Abfragen. Ich bevorzuge es, Filterkriterien mit VBA zu erstellen und beim Öffnen zu berichten. Überprüfen Allen Browne Filter

Wenn Sie einen Access-Bericht nicht verwenden können, was verwenden Sie für Berichte? Warum verwenden Sie VB6 anstelle von VBA hinter Access?

Ein Nur-Abfrage-Ansatz zum Erzielen der Ausgabeanordnung, die Sie anzeigen, würde wahrscheinlich das Erstellen von zwei Aggregatabfragen und dann eine UNION von diesen zum Rohdatenrecordset beinhalten.

+0

Hallo, danke für deine Zeit. Die "Summe täglicher Gesamtmenge" ist ein Verweis auf eine andere Antwort. Aus Platzgründen habe ich die Datengruppe "Agenda und Produkte" nicht berücksichtigt. Ich benutze Access-Datenbank, aber meine App ist komplett in vb6 gemacht, so dass meine Kunden nur die App-GUI verwenden. Ich weiß nicht, ob ich diese VBA-Sache in VB6 verwenden kann ... Die UNION-Sache, die Sie erwähnen, ist wahrscheinlich, was ich brauche, ich werde den von Ihnen erwähnten Allen Browne-Filter überprüfen. Vielen Dank. –

+0

VBA ist die mit MS Office-Apps verpackte Programmiersprache. Es ist VB6 in Syntax und Vokabular ähnlich, also nein, es wird nicht innerhalb VB6 verwendet. Verwenden Sie CrystalReports oder ein anderes Reporting-Tool mit VB6? Ich erwarte, dass Sie Berichtsobjekte in Access erstellen und VB6 sie manipulieren könnte. Bei einer Datenbank mit mehreren Benutzern müssen die Berichte jedoch in einem Split-Frontend und nicht in der Datentabelle gespeichert sein. – June7

+0

Ich bin gerade fertig mit ein paar Nachforschungen und VBA ist keine Option, der Allen Browne Filter ist für Access also nein; über CR ... Ich mache immer alle meine Berichte nach Code, auch alle meine Zugriffs-SQL-Abfragen sind vollständig in vb6 mit ADO/ADOX codiert. Aber dieser hat mich erwischt ... –

Verwandte Themen