Fråga : Hur jämför två sätter in, och baserat på en riktig jämförelse matar in in i another sätter in?

Oken jag har en bordlägga, som har DeviceName, OutageType, OutageDate, DownDate, TotalDown.

ColA har multipeltillträden som baseras på när outaged häntt (strömavbrottet var huruvida besegrar eller up).
ColB har typen av strömavbrottet för den specificerade apparaten i
ColC för ColA (igen upp eller besegra), är datera som occurredColD för strömavbrottet (i ColB) är datera, apparaten (i ColA) gick down
ColE är den sammanlagda tiden (i decimal- formatera) att apparaten var besegrar (detta är ett precalculated sätter in insatt från another skrivar), men endast fäst sätter in/ror som devicetype='up'

The bordlägger looks gillar:
abcd-s-2-01, besegrar, te> som är ogiltig, Null
abcd-s-2-01, upp, >, e>, ime>
abcd-s-2-01, besegrar, te> som är ogiltig, Null
abcd-s-2-01, upp, >, e>.ime>

Basically som, en strömavbrottstyp av besegrar innehåller endast den kända apparaten, typen av strömavbrottet och, när det strömavbrott uppstod.  En strömavbrottstyp av övre innehåller det känt, typ, daterar av strömavbrott, daterar apparaten gick besegrar, och den sammanlagda tiden som det var down

Here, är vad jag behöver.  Jag behöver att skapa ett nytt bordlägger som innehåller: behov för
TotalDown

The för
DeviceName
DeviceType
DownDate
UpDate (denna är datera i som devicetype='Up'en för apparaten som över listas i ColA) ovannämnda att vara för endast de apparater, som är ”, besegrar”.  Målet av bordlägga är att visa att vilken apparat gick, besegra och, då, och, då den kom säkerhetskopia och den sammanlagda tiden, den tog därefter för att komma säkerhetskopia.
The bordlägger tillverkat bör se lik:
abcd-s-2-01, besegrar, >, , *whereuppdateringen för e> är outagedaten, när type=up.

The besvärar I-förmiddagen som den har, figurerar ut hur man får uppdateringen och TotalTimen.  Jag kan hämta de första 3 kolonnerna från annan bordlägger, därför att de listas på en ror.  Förmiddag som I har prövas problem att hämta outageDaten och TotalTimen när Type=Up och sätter det in in i min nya meddelanden för strSQL för spring två för table.

I försökta (ett var outagetype=down och annat var outagetype=up) och jämför DeviceName, men understödjaSQL-queryen (var type=up) gör inte jordbruksprodukter de samma devicenamedatan.  Till exempel:

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

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

as som du kan se, SQL2, har ett extra tillträde som inte är i resultat för query SQL1.  (Namnge), när jag gör en recordset för att jämföra, apparaten två namnger (objRS.Fields =objRS1.Fields (name)) Jag får ogiltig värderar alla över förlägga, eller ingenting becaue, när SQL2 <> SQL1 det rörar upp vila av den enkla recordseten Loop.

The, kodifierar mig har är:
objRS = SQL1
objRS1=SQL2
Do, tills objRS för objRS.EOF
if (namnge), = (namnge), up_date för
then = (outagedate) else
up_date = null

This fungerar unitl mig, får till peka var det finns extrahjälpresultat från SQL2, som inte jämför till SQL1 (eller omvänt). för

Is där inte så långt försvåras för att uppnå detta i VB? Jag har varit pröva att göra den för två dagar, och I-förmiddagen som slår en mental block.

If som, du behöver mer klarhet, l5At mig know.
" klar "

Svar : Hur jämför två sätter in, och baserat på en riktig jämförelse matar in in i another sätter in?

Att anta ha dessa data i ditt bordlägger
devicename outagetype, downdate, outagedate, totaltime
acbd-s-2-1 BESEGRAR 15:00 2010-05-05: 00.000 OGILTIGT OGILTIGT
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 BESEGRAR 13:00 2010-05-06: 00.000 OGILTIGT OGILTIGT
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 BESEGRAR 11:00 2010-05-10: 00.000 OGILTIGT OGILTIGT
xyz-b-23-1 BESEGRAR 12:12 2010-04-05: 00.000 OGILTIGT OGILTIGT
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 BESEGRAR 11:00 2010-05-05: 00.000 OGILTIGT OGILTIGT
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 BESEGRAR 11:15 2010-05-06: 00.000 OGILTIGT OGILTIGT

om du körde denna query
välj A.*, B.* från
(välj * från tblOutage var OutageType = ”besegrar”), A
inre sammanfoga
(VÄLJ * från tblOutage var OutageType = ”upp”), B
på A.Devicename=B.Devicename OCH A.downdate=b.downdate

du har detta resultat
devicename        outagetype   downdate                outagedate  totaltime  devicename    outagetype   downdate                outagedate              totaltime
----------------- ------------ ----------------------- ----------- ---------- ------------- ------------ ----------------------- ----------------------- ------------
acbd-s-2-1 BESEGRAR 15:00 2010-05-05: 00.000 OGILTIGA OGILTIGA 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 BESEGRAR 13:00 2010-05-06: 00.000 OGILTIGA OGILTIGA 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 BESEGRAR 11:00 2010-05-05: 00.000 OGILTIGA OGILTIGA 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 BESEGRAR 12:12 2010-04-05: 00.000 OGILTIGA OGILTIGA xyz-b-23-1 UP 12:12 2010-04-05: 00.000 13:15 2010-04-05: 00.000 1.01

(4 påverkade rader)


Andra lösningar  
 
programming4us programming4us