Hi, vielleicht könnt ihr mir weiterhelfen...
Ich versuche den u.a. Code in Access umzusetzen, aber so leicht ist das wohl nicht, da das wohl alles verschachtelte Abfragen sein müssen.
Der zugrunde liegende Code greift auf die existenten Tabellen (Report,Item) zurück, die Ihr (vielleicht) von AIDA32/Everest kennt
und soll gewisse Informationen nach Tabelle t_Computer einfügen.
Der Code-Schnippel erledigt das:
Sodele, aber wie kreiere ich das ganze in Access? Dort habe ich vor mittels Visual Basic eine Funktion zu erstellen,
die das selbe erledigen soll. Eins zu eins umsetzen reicht nicht..
Mein erster Versuch, nur einen Rechner einzufügen klappt:
Aber wie verschachtele ich nun die anderen Angaben da mit rein?
Schwierig, schwierig... *seufz*
Aus Verzweiflung habe ich 6 Abfragen gebastelt (BS,IE,SP,CP,RO,(NN))
BS,IE,SP,CP,RO sind alle identisch aufgebaut.
NN:
Dann habe ich eine Einfüge-Abfrage gebastelt und den erhaltenen Code für die Funktion genommen:
Das funktioniert - sehr störend allerdings sind die Abfragen, die ich gerne direkt umgesetzt hätte.
Nachfolgend nach dem Einfügen soll zusätzlich ein Update laufen auf evtl. bereits vorhandene Rechner in t_Computer:
Der SQL-Code funktioniert - nur hier auch wieder: ACCESS ?
Eine Beispiel-DB ist in der Anlage enthalten.
Ich versuche den u.a. Code in Access umzusetzen, aber so leicht ist das wohl nicht, da das wohl alles verschachtelte Abfragen sein müssen.
Der zugrunde liegende Code greift auf die existenten Tabellen (Report,Item) zurück, die Ihr (vielleicht) von AIDA32/Everest kennt
und soll gewisse Informationen nach Tabelle t_Computer einfügen.
Der Code-Schnippel erledigt das:
Code:
-- neue, noch nicht in t_Computer vorhandene dort einfügen:
-- ggf. zwei identische Einträge in ITEMs für einen Report (z.B.ServicePack) = > 2 Datensätze => select distinct
insert into t_Computer (strComputerName, Kommentar, strBetriebssystem,strServicePack,strInternetExplorer,strCPU,strArbeitsSpeicher, Hauptnutzer)
select distinct rhost, Comment, BS.ivalue, SP.ivalue, IE.ivalue, CP.ivalue, RO.ivalue, MainUser
from report R inner join item BS on r.id = BS.reportid
inner join item SP on r.id = SP.reportid
inner join item IE on r.id = IE.reportid
inner join item CP on r.id = CP.reportid
inner join item RO on r.id = RO.reportid
left join t_computer C on R.rhost = c.strComputerName
where BS.iid=513 and SP.iid=540 and IE.iid=564 and CP.iid=517 and RO.iid=520
and c.strComputerName is null
Sodele, aber wie kreiere ich das ganze in Access? Dort habe ich vor mittels Visual Basic eine Funktion zu erstellen,
die das selbe erledigen soll. Eins zu eins umsetzen reicht nicht..
Mein erster Versuch, nur einen Rechner einzufügen klappt:
Code:
INSERT INTO t_Computer (strComputerName)
SELECT R.RHost FROM Report R
INNER JOIN Item I ON R.ID=I.ReportID
WHERE R.RHost Not In (Select strComputerName from t_Computer)
GROUP BY R.RHost;
Aber wie verschachtele ich nun die anderen Angaben da mit rein?
Schwierig, schwierig... *seufz*
Aus Verzweiflung habe ich 6 Abfragen gebastelt (BS,IE,SP,CP,RO,(NN))
Code:
SELECT Item.ReportID, Item.IValue AS <BS|SP|IE|CP|RO> FROM Item GROUP BY Item.ReportID, Item.IValue, Item.IID HAVING Item.IID=<513|540|564|517|520>;
BS,IE,SP,CP,RO sind alle identisch aufgebaut.
NN:
Code:
SELECT R.RHost, I.ReportID FROM Report AS R INNER JOIN Item AS I ON R.ID = I.ReportID
WHERE R.RHost Not In (Select strComputerName from t_Computer) GROUP BY R.RHost, I.ReportID;
Dann habe ich eine Einfüge-Abfrage gebastelt und den erhaltenen Code für die Funktion genommen:
Code:
Private Sub Befehl0_Click()
CurrentDb().Execute " INSERT INTO t_Computer ( strComputerName, Kommentar, strBetriebssystem, strServicePack, strInternetExplorer, strCPU, strArbeitsSpeicher, Hauptnutzer ) " _
& "SELECT Report.RHost AS strComputerName, Report.Comment AS Kommentar, BS.BS AS strBetriebssystem, SP.SP AS strServicePack, IE.IE AS strInternetExplorer, CP.CP AS strCPU, RO.RO AS strArbeitsSpeicher, Report.MainUser AS Hauptnutzer " _
& "FROM NN INNER JOIN (((((Report INNER JOIN BS ON Report.ID=BS.ReportID) INNER JOIN CP ON Report.ID=CP.ReportID) INNER JOIN IE ON Report.ID=IE.ReportID) INNER JOIN RO ON Report.ID=RO.ReportID) INNER JOIN SP ON Report.ID=SP.ReportID) ON NN.ReportID=Report.ID "
MsgBox "Fertig"
Das funktioniert - sehr störend allerdings sind die Abfragen, die ich gerne direkt umgesetzt hätte.
Nachfolgend nach dem Einfügen soll zusätzlich ein Update laufen auf evtl. bereits vorhandene Rechner in t_Computer:
Der SQL-Code funktioniert - nur hier auch wieder: ACCESS ?
Code:
-- update auf bekannte Rechner
update t_computer
set Kommentar = Comment, strBetriebssystem = BS.IValue, strServicePack = SP.IValue, strInternetExplorer = IE.IValue, strCPU = CP.IValue, strArbeitsSpeicher = RO.IValue, Hauptnutzer = MainUser
from report R inner join item BS on r.id = BS.reportid
inner join item SP on r.id = SP.reportid
inner join item IE on r.id = IE.reportid
inner join item CP on r.id = CP.reportid
inner join item RO on r.id = RO.reportid
inner join t_computer C on R.rhost = c.strComputerName
where BS.iid=513 and SP.iid=540 and IE.iid=564 and CP.iid=517 and RO.iid=520
Eine Beispiel-DB ist in der Anlage enthalten.
Anhänge
Zuletzt bearbeitet: