[SQL2Access] Update Probleme

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:

-- neue, noch nicht in t\_Computer vorhandene Rechner einfügen:
insert into dbo\_t\_Computer (strComputerName, strBetriebssystem,strServicePack,strInternetExplorer,strCPU,strArbeitsSpeicher)
select rhost, BS.ivalue, SP.ivalue, IE.ivalue, CP.ivalue, RO.ivalue
 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 dbo\_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:

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*

Harry

Hi Harry,

vielleicht könnt ihr mir weiterhelfen…

probieren wir es mal … :smile:

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.

ok, das ist das Stichwort= Abfragen

  1. Starte deine DB in Access
  2. im Datenbankfenster klickst du links auf ABFRAGEN
  3. erstelle eine neue Abfrage
  4. nun kannst du einfach die erforderlichen Abfragekriterien definieren
  5. Ansicht / SQL-Ansicht klicken
  6. nun siehst du den SQL-String, den du nur noch in deinen VBA-Code kopieren mußt.
  7. fertig

ganz einfach :smile:

Grüße aus Essen
Wolfgang

habs hingekriegt…

[CODE]
’ – neue, noch nicht in Tabelle t_Computer vorhandene Rechner dort einfügen

Dim stSql As String
Dim stSqlu As String

stSql = „INSERT INTO t_Computer (strComputerName, Kommentar, strBetriebssystem, strServicePack, strInternetExplorer, strCPU,strArbeitsSpeicher, Hauptnutzer) " _
& " SELECT DISTINCT R.RHost, R.Comment, BS.IValue, SP.IValue, IE.IValue, CP.IValue, RO.IValue, R.MainUser“ _
& " FROM ((Item AS IE INNER JOIN (Item AS SP INNER JOIN (Report AS R INNER JOIN Item AS BS ON R.ID = BS.ReportID) ON SP.ReportID = R.ID) ON IE.ReportID = R.ID) INNER JOIN Item AS RO ON R.ID = RO.ReportID) INNER JOIN Item AS CP ON R.ID = CP.ReportID " _
& " WHERE (((R.RHost) Not In (Select strComputername from t_Computer)) AND ((BS.IID)=513) AND ((SP.IID)=540) AND ((IE.IID)=564) AND ((CP.IID)=517) AND ((RO.IID)=520))"

CurrentProject.Connection.Execute stSql

’ – update auf bekannte Rechner

stSqlu = „UPDATE ((((t_Computer INNER JOIN (Report AS R INNER JOIN Item AS CP ON R.ID = CP.ReportID) ON t_Computer.strComputerName = R.RHost) INNER JOIN Item AS IE ON R.ID = IE.ReportID) INNER JOIN Item AS SP ON R.ID = SP.ReportID) INNER JOIN Item AS BS ON R.ID = BS.ReportID) INNER JOIN Item AS RO ON R.ID = RO.ReportID SET t_Computer.Kommentar = [R].[Comment], t_Computer.strBetriebssystem = BS.Ivalue, t_Computer.strServicePack = SP.Ivalue, t_Computer.strInternetExplorer = IE.Ivalue, t_Computer.strCPU = CP.Ivalue, t_Computer.strArbeitsSpeicher = RO.Ivalue, t_Computer.Hauptnutzer = [R].[MainUser]“ _
& " WHERE (((BS.IID)=513) AND ((SP.IID)=540) AND ((IE.IID)=564) AND ((CP.IID)=517) AND ((RO.IID)=520))"

CurrentProject.Connection.Execute stSqlu[/CODE]

Inti31