Zum Inhalt springen

DJTank

Mitglieder
  • Gesamte Inhalte

    59
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von DJTank

  1. Hoppla, das kam noch von einem Versuch, ich habe die Kommentierung natürlich wieder entfernt.
  2. Hallo Leute, schon wieder eine banale Frage, aber ich probiere schon seit heute morgen und bekomm es nicht geregelt. Hier der Code: Public Function ProjektNrVergabe(ByVal strUser As String, ByVal intProjektArt As Long) As String Dim rs As Recordset, rs1 As Recordset Dim strTemp As String Dim strProjektArt As String Dim strDmax As Long, strDmaxArchiv As Long On Error GoTo Fehler strDmax = 0 strDmaxArchiv = 0 strProjektArt = CStr(intProjektArt) ' 'überprüfung in t_pronr und festlegen der projektnummer nach der logtabelle If strODBC = "nein" Then Set rs = CurrDataBase.OpenRecordset("SELECT TOP 1 user,protype,Nummer,datum FROM t_pronr WHERE user = '" + strUser + "' AND protype = " + CStr(intProjektArt) + "") ElseIf strODBC = "ja" Then Set rs = CurrDataBase.OpenRecordset("SELECT user,protype,Nummer,datum FROM t_pronr") ' WHERE user = '" + strUser + "' AND protype = " + CStr(intProjektArt) + " AND rownum = 1") End If Ich probiere genau das selbe einmal gegen eine Access-DB und beim zweiten "If" gegen eine Oracle-DB. Mit Access funktioniert alles einwandfrei (if strODBC = "nein"). Mit Oracle bekomme ich aber folgende Fehlermeldung (if strODBC = "ja"): Wäre super, wenn mir jmd helfen kann. Danke schonmal lg Stefan
  3. Hallo Leute, dubioses Problem, welches ich nicht verstehe. Habe folgenden Code: If strODBC = "nein" Then Set rs = CurrDataBase.OpenRecordset("SELECT TOP 1 ... FROM ((t_pro LEFT JOIN t_pro1 ON t_pro.pronr1 = t_pro1.pronr1) LEFT JOIN t_pro2 ON t_pro.pronr1 = t_pro2.pronr1) LEFT JOIN t_rek ON t_pro.pronr1 = t_rek.pronr1 WHERE t_pro.pronr1 = '" + strPronrOK + "'") ElseIf strODBC = "ja" Then Set rs = CurrDataBase.OpenRecordset("SELECT TOP 1 ... FROM ((t_pro LEFT OUTER JOIN t_pro1 ON t_pro.pronr1 = t_pro1.pronr1) LEFT OUTER JOIN t_pro2 ON t_pro.pronr1 = t_pro2.pronr1) LEFT OUTER JOIN t_rek ON t_pro.pronr1 = t_rek.pronr1 WHERE t_pro.pronr1 = '" + strPronrOK + "'") End If ' If Not (rs.BOF And rs.EOF) Then rs.Edit ... Zur Erklärung, das ganz läuft in einem Access2000 Frontend via verknüpfter Tabellen. Bei "strODBC="nein"" handelt es sich bei den verknüpften Tabellen um MDBs. Beim anderen Fall um eine ODBC-Verknüpfung Richtung Oracle 9i. Jetzt das komische, ich weiß, dass man Abfragen, welche Joins enthalten nicht aktualisieren kann (rs.edit), jedoch funktioniert das, wenn ich das Ding mittels Access-Verknüpfung laufen lasse. Wenn die Verknüpfung nach Oracle zeigt, verwendet mein Frontend die zweite Abfrage mit den "LEFT OUTER JOINS", dann bekomme ich aber beim "rs.edit" eine Fehlermeldung "Abfrage nicht aktualisierbar, schreibgeschützt...". Was mache ich falsch? Eigentlich müsste ich die Fehlermeldung ja bei beiden Varianten oder bei gar keiner bekommen (bestehen ja beide aus JOINS). Ich bedanke mich schonmal für eure Hilfe lg Stefan
  4. :floet: Nachdem ich nun alles nochmal verworfen , den Code neu geschrieben und auf das Wesentliche beschränkt habe, bin ich drauf gekommen, dass ich was entscheidendes verschwitzt habe Alle Bezeichnungen sind in Oracle in GROSSSCHREIBUNG abgelegt, darum konnte er keine Objekte finden. Vielen Dank für Eure Hilfe Vorerst kann ich meine Oracle-Migration weiterführen. Gruß Stefan
  5. Danke für die schnelle Antwort hier die komplette Funktion. Nach dem RefreshLink kommt die Fehlermeldung jawohl. CurrDataBase ist eine globale Variable für CurrentDB(). Public Function EinbindenINI() As String Dim Help1 As String, Help2 As String Dim strTabelle As String Dim strPasswrd As String Dim I As Long, I1 As Long Dim wsp As DAO.Workspace Dim ConnEinbinden As DAO.TableDefs Dim tn As String On Error GoTo Fehler strCurrentAction = conSpace0 Set wsp = DBEngine.Workspaces(0) wsp.BeginTrans If strEinbinden = conYes Then ' I1 = CurrDataBase.TableDefs.Count - 1 Set ConnEinbinden = CurrDataBase.TableDefs ' For I = 0 To I1 Help1 = conSpace0 Help2 = conSpace0 strTabelle = conSpace0 ' On Error Resume Next 'Hilfe bei FehlerDiagnose Help1 = CurrDataBase.TableDefs(I).Connect 'Name der Tabelle festlegen Help2 = "Table: " + Nz(CurrDataBase.TableDefs(I).Name, conSpace0) 'Name nochmal ohne Beschriftung tn = Nz(CurrDataBase.TableDefs(I).SourceTableName, conSpace0) On Error GoTo Fehler ' If Len(Help1) > 0 Then 'wenn es eine verknüpfte tabelle ist... ' If strODBC = "ja" Then ' If Right(Help1, 3) = "mdb" And Right(Help1, 10) <> "export.mdb" And Right(Help1, 9) <> "saege.mdb" _ And Right(Help1, 6) <> "vp.mdb" Then CurrDataBase.TableDefs(I).Connect = strODBCstring + ";TABLE=HACOS." + tn CurrDataBase.TableDefs(I).RefreshLink DoEvents End If 'Passwort und Pfad laden 'Call strTabelleDaten(Help1, strPasswrd, strTabelle) ' If Right(strTabelle, 14) = "NavOffline.mdb" And (strTabelle <> "DATABASE=" + strNavOfflineMdb Or strPasswrd = conSpace0) Then Help1 = "DATABASE=" + strNavOfflineMdb ConnEinbinden(I).Connect = ";DATABASE=" + strNavOfflineMdb + ";pwd=" + myPassWord ConnEinbinden(I).RefreshLink DoEvents ElseIf Right(strTabelle, 9) = "Saege.mdb" And (strTabelle <> "DATABASE=" + strSaegeMdb Or strPasswrd = conSpace0) Then Help1 = "DATABASE=" + strSaegeMdb ConnEinbinden(I).Connect = ";DATABASE=" + strSaegeMdb + ";pwd=" + myPassWord ConnEinbinden(I).RefreshLink DoEvents ElseIf Right(strTabelle, 8) = "user.mdb" And (strTabelle <> "DATABASE=" + strUserMdb Or strPasswrd = conSpace0) Then Help1 = "DATABASE=" + strUserMdb ConnEinbinden(I).Connect = ";DATABASE=" + strUserMdb + ";pwd=" + myPassWord ConnEinbinden(I).RefreshLink DoEvents ElseIf Right(strTabelle, 7) = "cad.mdb" And (strTabelle <> "DATABASE=" + strCadMdb Or strPasswrd = conSpace0) Then Help1 = "DATABASE=" + strCadMdb ConnEinbinden(I).Connect = ";DATABASE=" + strCadMdb + ";pwd=" + myPassWord ConnEinbinden(I).RefreshLink DoEvents ElseIf Right(strTabelle, 11) = "projekt.mdb" And (strTabelle <> "DATABASE=" + strProjektMdb Or strPasswrd = conSpace0) Then Help1 = "DATABASE=" + strProjektMdb ConnEinbinden(I).Connect = ";DATABASE=" + strProjektMdb + ";pwd=" + myPassWord ConnEinbinden(I).RefreshLink DoEvents ElseIf Right(strTabelle, 14) = "stammdaten.mdb" And (strTabelle <> "DATABASE=" + strStammdatenMdb Or strPasswrd = conSpace0) Then Help1 = "DATABASE=" + strStammdatenMdb ConnEinbinden(I).Connect = ";DATABASE=" + strStammdatenMdb + ";pwd=" + myPassWord ConnEinbinden(I).RefreshLink DoEvents ElseIf Right(strTabelle, 6) = "vp.mdb" And (strTabelle <> "DATABASE=" + strVpMdb Or strPasswrd = conSpace0) Then Help1 = "DATABASE=" + strVpMdb ConnEinbinden(I).Connect = ";DATABASE=" + strVpMdb + ";pwd=" + myPassWord ConnEinbinden(I).RefreshLink DoEvents ElseIf Right(strTabelle, 12) = "language.mdb" And (strTabelle <> "DATABASE=" + strLanguageMdb Or strPasswrd = conSpace0) Then Help1 = "DATABASE=" + strLanguageMdb ConnEinbinden(I).Connect = ";DATABASE=" + strLanguageMdb + " ;pwd=" + myPassWord ConnEinbinden(I).RefreshLink DoEvents ElseIf Right(strTabelle, 16) = "internet_RA1.mdb" And (strTabelle <> "DATABASE=" + strInternetMdb Or strPasswrd = conSpace0) Then Help1 = "DATABASE=" + strInternetMdb ConnEinbinden(I).Connect = ";DATABASE=" + strInternetMdb + " ;pwd=" + myPassWord ConnEinbinden(I).RefreshLink DoEvents End If End If End If Next I CurrDataBase.TableDefs.Refresh End If strEinbinden = "NEIN" wsp.CommitTrans ' Änderungen übernehmen Ausgang: On Error Resume Next Set ConnEinbinden = Nothing Set wsp = Nothing strCurrentAction = conSpace0 Exit Function Fehler: wsp.Rollback If Nz(Err.Description, conSpace0) = conSpace0 Or Err.Number = 0 Then Call ErrorLog(strUserIdent, 8150815, Help1 + " " + Help2, "m_einbinden / EinbindenINI", , True) Else Call ErrorLog(strUserIdent, Err.Number, Err.Description, "m_einbinden / EinbindenINI", Help1 + " " + Help2, True) End If Set ConnEinbinden = Nothing Set wsp = Nothing Set CurrDataBase = Nothing Set dbsFileArchiv = Nothing Application.Quit Resume Ausgang Resume Next End Function
  6. Ich hab hier nur eine lokale Testumgebung, deshalb habe ich das Passwort im Klartext gepostet. Ich habe das ganze jetzt wieder auf ein Minimum reduziert, nachdem ich kreuz und quer herumprobiert habe. Die momentane Fehlermeldung lautet folgendermaßen: "Das Microsoft Jet-Datenbankmodul konnte das Objekt 'Bankkonto' nicht finden. Stellen Sie sicher, dass das Objekt existiert und dass die Namens- und Pfadangaben richtig eingegeben wurden." Ich habe momentan nur noch Links auf Access-Datenbanken und versuche diese auf ODBC zu verknüpfen, dies geschieht mit folgendem Code: Dim Help1 As String, Help2 As String Dim strTabelle As String Dim strPasswrd As String Dim I As Long, I1 As Long Dim wsp As DAO.Workspace Dim ConnEinbinden As DAO.TableDefs Dim tn As String On Error GoTo Fehler strCurrentAction = conSpace0 Set wsp = DBEngine.Workspaces(0) wsp.BeginTrans If strEinbinden = conYes Then ' I1 = CurrDataBase.TableDefs.Count - 1 Set ConnEinbinden = CurrDataBase.TableDefs ' For I = 0 To I1 Help1 = conSpace0 Help2 = conSpace0 strTabelle = conSpace0 ' On Error Resume Next 'Hilfe bei FehlerDiagnose Help1 = ConnEinbinden(I).Connect 'Name der Tabelle festlegen Help2 = "Table: " + Nz(ConnEinbinden(I).Name, conSpace0) 'Name nochmal ohne Beschriftung tn = Nz(ConnEinbinden(I).SourceTableName, conSpace0) On Error GoTo Fehler ' If Len(Help1) > 0 Then 'wenn es eine verknüpfte tabelle ist... ' If strODBC = "ja" Then ' If Right(Help1, 3) = "mdb" And Right(Help1, 10) <> "export.mdb" And Right(Help1, 9) <> "saege.mdb" _ And Right(Help1, 6) <> "vp.mdb" Then ConnEinbinden(I).Connect = strODBCstring + ";TABLE=HACOS." + tn ConnEinbinden(I).RefreshLink DoEvents End If ...
  7. Hallo Gemeinde Wir haben hier eine Applikation, welche zur Zeit aus einem Access-Frontend und externer Access-Datenbanken besteht. Nun möchten wir je nach Einsatzzweck die Tabellen-Verknüpfen, die im Frontend auf die richtigen Tabellen zeigen dynamisch ändern. Dies geschieht durch ein Text-File, in welchem die Pfade zu den MDB's bzw. der ODBC-Connectionstring enthalten sind (je nach Einsatzzweck wird das eine oder das andere verwendet). Beim Starten unserer Applikation überprüfen wir alle unsere Tabellen-Verknüpfungen, ob sie lt. dem Textfile noch aktuell sind. Ist dies nicht der Fall, sollte die Verknüpfung geändert werden. Nun ein paar Fragen: - wie kann es sein, dass ich, wenn ich die Tabellenverknüpfungen per "DAO.Tabledefs" durchgehe, Tabellen vorkommen, die gar nicht existieren (zB. hatte ich mal eine Access-Verknüpfung auf eine Tabelle namens "Bankkonto", welche ich gelöscht habe und zu Testzwecken einen ODBC-Link mit dem selben Namen, also "Bankkonto" erstellt habe). Wenn ich nun mit einer Schleife alle Verknüpfungen durchgehe bekomme ich immer beide Verknüpfungen, obwohl die eine gar nicht existiert. - Mein ODBC-String sieht folgendermaßen aus (für Oracle), wäre der korrekt? ODBC;DSN=hacos_oracle;UID=SYSTEM;PWD=XXXXX;DBQ=HACOS - Auf diese Art möchte ich die Verknüpfung aktualisieren, falls es eine MDB ist und es eine ODBC-Verknüpfung werden soll: Dim ConnEinbinden As DAO.TableDefs ConnEinbinden(I).Connect = strODBCstring + ";TABLE=Hacos." + ConnEinbinden(I).SourceTableName ConnEinbinden(I).RefreshLink DoEvents Ich bekomme die verschiedensten Fehlermeldungen und habe zur Zeit gar keinen Durchblick mehr, vielleicht hat schon jemand Erfahrung mit dynamischen Verknüpfungen. Ich danke vielmals. Stefan

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...