Benutzer mit den meisten Antworten
[Access] Abfragen in andere Datenbank kopieren

Frage
-
Hallo,
ich möchte aus meiner aktuellen Datenbank alle Abfragen in eine weitere Datenbank per VBA kopieren.
Jedoch habe ich dabei noch 2 Probleme:
1. Das Kopieren haut noch nicht immer hin. Warum ?
2. Wie kann ich abfragen, ob eine Abfrage mit gleichem Namen in der ZielDB schon vorhanden ist ?
mein bisheriger Ansatz sieht wie folgt aus:
Sub CopyAllQueryDefs() On Error GoTo Fehler Dim item As Variant Dim strSQL As String Dim strName As String Const c_strDatabasePath As String = "\\snas401\idvit$\_install\idvit0092\VA_Execute_v1.32.mdb" For Each item In CurrentDb.QueryDefs strName = item.Name strSQL = item.SQL Call CreatNewQueryDef(strName, strSQL, c_strDatabasePath) Next Ausgang: Exit Sub Fehler: MsgBox Err.Description, vbCritical, Err.Number Resume Ausgang End Sub Public Function CreatNewQueryDef(ByVal pstrName As String, ByVal pstrSQL As String, ByVal pstrDatabasePath As String) On Error Resume Next Dim db As Database Set db = DBEngine(0).OpenDatabase(pstrDatabasePath) Call db.CreateQueryDef(pstrName, pstrSQL) db.Close Set db = Nothing Ausgang: Exit Function Fehler: MsgBox Err.Description, vbCritical, Err.Number Resume Ausgang
- Verschoben Kay GizaMicrosoft employee Freitag, 27. August 2010 05:59 (aus:Microsoft Office System)
Antworten
-
Habs inzwischen anders lösen können, trotzdem vielen Dank !
- Als Antwort markiert Robert BreitenhoferModerator Dienstag, 11. Mai 2010 09:45
Alle Antworten
-
Hallo RQ-1,
zu 1: Gibt es eine Fehlermeldung oder wird die Abfrage nicht angelegt oder nicht mit abgespeichert?
zu 2: geht so; einfach noch das Datenbank-Objekt übergeben und CurrentDB ersetzen.
Public Function QueryExists(ByVal queryName As String) As Boolean
Dim qry As DAO.QueryDef
On Error Resume Next
Set qry = CurrentDb.QueryDefs(queryName)
If Err.Number <> 0 Then
Err.Clear
QueryExists = False
Else
QueryExists = True
End If
End Function
Olaf Helper ----------- * cogito ergo sum * errare humanum est * quote erat demonstrandum * Wenn ich denke, ist das ein Fehler und das beweise ich täglich http://olafhelper.over-blog.de -
Am 15.01.2010 12:44, schrieb RQ-1:
> 1. Das Kopieren haut noch nicht immer hin. Warum ?
Wie genau kopierst Du die Abfragen? Schau dir DoCmd.CopyObject genau an,
Du kannst damit Abfragen und Tabellen von einer DB in die andere kopieren
.
> 2. Wie kann ich abfragen, ob eine Abfrage mit gleichem Namen in der
> ZielDB schon vorhanden ist ?
Dim i As Long, AnzTD As Long
AnzTD = db.TableDefs.Count - 1
Anz_Tab_gelöscht = 0
For i = AnzTD To 0 Step -1
Set Tabelle = db.TableDefs(i)
If Tabelle.Name = "DeineAbfrage" Then
db.TableDefs.Delete (Tabelle.Name)
Anz_Tab_gelöscht = Anz_Tab_gelöscht + 1
End If
Next i
Du muÃt das db.TableDefs(i) auf Abfragen (Querys) abändern.
Winfried -
Habs inzwischen anders lösen können, trotzdem vielen Dank !
- Als Antwort markiert Robert BreitenhoferModerator Dienstag, 11. Mai 2010 09:45
-
RQ-1 schrieb:
> Habs inzwischen anders lösen können, trotzdem vielen Dank !
Und wie hast Du es gelöst?
Servus
Winfried
--
Connect2WSUS: http://www.grurili.de/tools/Connect2WSUS.exe
GPO's: www.gruppenrichtlinien.de
Gruppenrichtlinien Mailingliste "gpupdate":
http://frickelsoft.net/cms/index.php?page=mailingliste