Frage : Wie zwei Felder vergleichen und gegründet auf einem zutreffenden Vergleichseingang in ein anderes Feld?

O.K., habe ich eine Tabelle, die DeviceName, OutageType, OutageDate, DownDate hat, TotalDown.

ColA habe die mehrfachen Eintragungen, die auf wenn outaged geschehen basieren (ob Störung unten war oder up).
ColB hat die Art der Störung für die spezifizierte Vorrichtung Kolabaum (wieder auf oder ab) im
ColC ist das Datum, welches das Störung (in ColB) occurred
ColD das Datum ist, die Vorrichtung (im Kolabaum) down
ColE ist die Gesamtzeit ging (im dezimalen Format) die die Vorrichtung (dieses ist ein im Voraus berechnetes Feld, das von einem anderen Index eingesetzt wird) aber nur angebracht zu den Feldern/zu den Reihen, die war Tabelle des devicetype='up'< Brs/>
The hinunter wie aussieht:
abcd-s-2-01 unten te>, Null, Null
abcd-s-2-01, herauf, >, e>, ime>
abcd-s-2-01 unten te>, Null, Null
abcd-s-2-01, herauf, >, e>.ime>

Basically eine Störungsart von unten enthält nur den Gerätenamen, die Art der Störung und als diese Störung auftrat.  Eine Störungsart von hohem enthält den Namen, Art, Datum der Störung, ging Datumvorrichtung unten, und die Gesamtzeit, die es down

Here war, ist, was ich benötige.  Ich muss eine neue Tabelle herstellen, die enthält:
DeviceName
DeviceType
DownDate
UpDate (dieses ist das Datum, in dem das devicetype='Up für die Vorrichtung oben verzeichnet im Kolabaum)
TotalDown

The oben genannte Notwendigkeiten, für nur jene Vorrichtungen zu sein, die „unten“ sind.  Das Ziel der Tabelle ist, zu zeigen, welche Vorrichtung unten ging und wenn, und dann, als es Unterstützung und die Gesamtzeit kam, nahm sie, um zu kommen Unterstützung.
The Tabellenausgang sollte wie aussehen:
abcd-s-2-01 unten >, , e> *where Update ist das outagedate, wenn type=up.

The Mühe, die ich habe, herausfindet, wie man das Update und das TotalTime erhält.  Ich kann die ersten 3 Spalten von der anderen Tabelle zurückholen, weil die auf einer Reihe aufgeführt sind.  Ich habe Probleme zu versuchen, das outageDate und das TotalTime zurückzuholen wenn Type=Up und es in mein neues table.

I einzusetzen versucht, zwei strSQL Aussagen (eine, wo outagetype=down und die andere laufen lassend wo outagetype=up) und vergleiche DeviceName, aber die zweite SQL-Frage (wo type=up) legt nicht die gleichen devicename Daten vor.  Z.B.:

SQL1 produziert:
devicename, outagetype, downdate
abcd-s-2-1 unten 17:00 2010-06-01: 37
abcd-s-2-1 unten 19:00 2010-06-01: 15
xyz-s-2-1 unten 18:00 2010-06-01: 01
xyz-s-2-1 unten 07:05 2010-06-05: 49
xyz-s-2-1 unten 12:15 2010-06-10: 56

SQL2 produziert:
devicename, outagetype, downdate, outagedate, totaltime
abcd-s-2-1, HERAUF, 17:00 2010-06-01: 37, 17:15 2010-06-01: 00, 0.23
abcd-s-2-1, HERAUF, 19:00 2010-06-01: 15, 19:30 2010-06-01: 18, 0.51
xyz-s-2-1, HERAUF, 18:00 2010-06-01: 01, 19:00 2010-06-01: 00, 1.00
xyz-s-2-1, HERAUF, 07:05 2010-06-05: 49, 09:35 2010-06-05: 25, 2.50
xyz-s-2-1, HERAUF, 12:15 2010-06-10: 56, 11:10 2010-06-11: 10, 22.90
xyz-s-2-1, HERAUF, 10:22 2010-06-06: 00, 01:11 2010-06-07: 41, 20.85

as, das Sie sehen können, SQL2, hat eine Extraeintragung, die nicht in den Resultaten der Frage SQL1 ist.  Wenn ich ein recordset tue, um die zwei Gerätenamen (objRS.Fields (Namens) =objRS1.Fields (name) zu vergleichen) Ich erhalte ungültige Werte ganz über dem Platz oder nichts becaue, wenn SQL2 <> SQL1 es oben den Rest des recordset Loop.

The einfachen Codes verwirrt, den ich bin habe:
objRS = SQL1
objRS1=SQL2
Do, bis objRS.EOF
if objRS (Name) =
then up_date = else
up_date = null

This unitl ich bearbeitet, gelangen an den Punkt, in dem es Extraresultate von SQL2 gibt, die nicht mit SQL1 vergleichen (oder umgekehrt).

Is dort eine nicht so schwierige Weise, dieses in VB zu erzielen? Ich habe versucht, es für zwei Tage zu tun und ich schlage ein Geistesblock.

If, das Sie mehr Klarheit lassen mich know.
benötigen

Antwort : Wie zwei Felder vergleichen und gegründet auf einem zutreffenden Vergleichseingang in ein anderes Feld?

Annehmen, diese Daten in Ihrer Tabelle habend
devicename, outagetype, downdate, outagedate, totaltime
acbd-s-2-1 NIEDERWERFEN 15:00 2010-05-05 05-05: 00.000 UNGÜLTIGE NULL
acbd-s-2-1 UP 15:00 2010-05-05: 00.000 18:15 2010-05-05: 00.000 3.25
acbd-s-2-1 NIEDERWERFEN 13:00 2010-05-06 05-06: 00.000 UNGÜLTIGE NULL
acbd-s-2-1 UP 13:00 2010-05-06: 00.000 13:45 2010-05-06: 00.000 0.75
acbd-s-2-1 NIEDERWERFEN 11:00 2010-05-10 05-10: 00.000 UNGÜLTIGE NULL
xyz-b-23-1 NIEDERWERFEN 12:12 2010-04-05 04-05: 00.000 UNGÜLTIGE NULL
xyz-b-23-1 UP 12:12 2010-04-05: 00.000 13:15 2010-04-05: 00.000 1.01
xyz-b-23-1 NIEDERWERFEN 11:00 2010-05-05 05-05: 00.000 UNGÜLTIGE NULL
xyz-b-23-1 UP 11:00 2010-05-05: 00.000 14:05 2010-05-05: 00.000 3.02
xyz-b-23-1 NIEDERWERFEN 11:15 2010-05-06 05-06: 00.000 UNGÜLTIGE NULL

wenn Sie diese Frage laufen ließen
A.*, B.* vorwählen von
(* vom tblOutage vorwählen in dem OutageType = „unten "), A
inner verbinden
(* vom tblOutage VORWÄHLEN in dem OutageType = „oben "), B
auf A.Devicename=B.Devicename UND A.downdate=b.downdate

Sie haben dieses Resultat
devicename        outagetype   downdate                outagedate  totaltime  devicename    outagetype   downdate                outagedate              totaltime
----------------- ------------ ----------------------- ----------- ---------- ------------- ------------ ----------------------- ----------------------- ------------
acbd-s-2-1 NIEDERWERFEN 15:00 2010-05-05 05-05: 00.000 UNGÜLTIGE NULL acbd-s-2-1 UP 15:00 2010-05-05: 00.000 18:15 2010-05-05: 00.000 3.25
acbd-s-2-1 NIEDERWERFEN 13:00 2010-05-06 05-06: 00.000 UNGÜLTIGE NULL acbd-s-2-1 UP 13:00 2010-05-06: 00.000 13:45 2010-05-06: 00.000 0.75
xyz-b-23-1 NIEDERWERFEN 11:00 2010-05-05 05-05: 00.000 UNGÜLTIGE NULL xyz-b-23-1 UP 11:00 2010-05-05: 00.000 14:05 2010-05-05: 00.000 3.02
xyz-b-23-1 NIEDERWERFEN 12:12 2010-04-05 04-05: 00.000 UNGÜLTIGE NULL xyz-b-23-1 UP 12:12 2010-04-05: 00.000 13:15 2010-04-05: 00.000 1.01

(4 Reihen beeinflußt)


Weitere Lösungen  
 
programming4us programming4us