Ich habe ein Datenblatt in Excel und ich möchte einige Informationen erhalten, indem Sie ado Verbindung in Excel VBA verwenden. Ich habe 3 Anfragen geschrieben, um diese Arbeit zu erledigen und werde noch ein paar mehr schreiben. Daten sieht so aus, Wie diese SQL-Abfragen in Excel zu kombinieren
Lassen Sie mich es ein wenig erklären. Order No
ist der Arbeitsauftrag eines Jobs. Resource Id
ist eigentlich eine eindeutige Nummer für eine Maschine. Duru Kodu
ist der Code erklärt den Grund des Stopps zwischen Bitim Zamani
(Endzeit) und Basl Zamani
(Startzeit). Qty
ist die Produktionsmenge.
Ich zeigte die Daten nur für EM22, aber es gibt natürlich mehr Maschinen.
Stop-Codes sind tatsächlich in zwei unterteilt, die geplant und ungeplant sind. Codes für geplante sind D00 D10 D11
. Andere Codes von D01 bis D30 sind ungeplante Stopps.
ich total geplante Stopps, ungeplante Stopps und Menge für eine bestimmte Ressource-ID und gruppiert sie nach Bestell-Nr
Ich konnte nicht kommen mit einer Abfrage mag, die auf einmal all die Dinge tun, aber geteilt es drei . Erster für ungeplante Stopps. Der zweite ist für geplante Stopps und der letzte ist für Menge.
'Specified Machine Number(EM22)
makine = Sheets("Dashboard").Cells(2, 11).Value
'Unplanned
sorgu1 = "select [Resource Id], [Order No], Sum(([Bitim Zamani]-[Basl Zamani])*1440) as Sure"
sorgu1 = sorgu1 + " from [Data$] where [Resource Id] = " + "'" + makine + "'"
sorgu1 = sorgu1 + " AND "
sorgu1 = sorgu1 + "([Duru Kodu] = 'D01' OR [Duru Kodu] = 'D02' OR [Duru Kodu] = 'D03' OR [Duru Kodu] = 'D04' OR [Duru Kodu] = 'D05' OR [Duru Kodu] = 'D06' OR [Duru Kodu] = 'D07' OR [Duru Kodu] = 'D08' OR [Duru Kodu] = 'D09' OR [Duru Kodu] = 'D12' OR [Duru Kodu] = 'D13' OR [Duru Kodu] = 'D14' OR [Duru Kodu] = 'D15' OR [Duru Kodu] = 'D16' OR [Duru Kodu] = 'D17' OR [Duru Kodu] = 'D18' OR [Duru Kodu] = 'D19' OR [Duru Kodu] = 'D20' OR [Duru Kodu] = 'D21' OR [Duru Kodu] = 'D22' OR [Duru Kodu] = 'D23' OR [Duru Kodu] = 'D24' OR [Duru Kodu] = 'D25' OR [Duru Kodu] = 'D26' OR [Duru Kodu] = 'D27' OR [Duru Kodu] = 'D28' OR [Duru Kodu] = 'D29' OR [Duru Kodu] = 'D30')"
sorgu1 = sorgu1 + "GROUP BY [Resource Id], [Order No]"
'Planned
sorgu2 = "SELECT Sum(([Bitim Zamani]-[Basl Zamani])*1440) as Surem from [Data$] where [Resource Id] = " + "'" + makine + "'" + " AND "
sorgu2 = sorgu2 + "([Duru Kodu] = 'D00' OR [Duru Kodu] = 'D10' OR [Duru Kodu] = 'D11') "
sorgu2 = sorgu2 + "GROUP BY [Resource Id], [Order No]"
'Quantity
sorgu3 = "SELECT Sum([Qty]) as Uretim from [Data$] where [Resource Id] =" + "'" + makine + "'" + " group by [Resource Id],[Order No]"
Die wichtigste Frage ist hier, dass, wenn es eine Möglichkeit, diese Abfragen zu kombinieren.
Auch gibt es ein anderes Problem, das unten gezeigt wird. Was es sein soll ist wie im gelben Teil.
Aber Ergebnis ist in dem grauen durch SQL-Abfragen erzeugte Teil tut Spiel, wenn eine Summe auf 0
Ich werde dies versuchen, sobald ich einen Weg finden kann, dies auf Mac zu arbeiten. –
Können Sie die zweite Summenfunktion ändern? Du hast Bedingungen als gleich geschrieben. einer von ihnen sollte D01 bis D30 sein. Du kannst es einfach angeben, das wäre genug. Und das funktioniert. Vielen Dank. :) –
@alisrn - Die zweite Summenfunktion multipliziert mit 1440 in den Fällen, in denen die erste mit Null multipliziert wird und umgekehrt. Je nach Wert von "Duru Kodu" wird also für jeden Datensatz nur eine der beiden Summen addiert. – YowE3K