Autor Thema: Von Excel oder Acces in ein Feld  (Gelesen 1068 mal)

Diehler

  • Gast
Von Excel oder Acces in ein Feld
« am: 16.01.03 - 12:59:22 »
Ich muss aus einer Excel oder Access Datei etzwas dynamisch in ein Feld schreiben. Geht das???

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Von Excel oder Acces in ein Feld
« Antwort #1 am: 16.01.03 - 13:34:00 »
... grundsätzlich ja...

... in der Hilfe erfährst du, wie du OLE-Objekte initialisieren kannst.
... über Makros in Excel kannst du den entsprechenden Code zum ansteueren des Feldes erfahren...

ata
Grüßle Toni :)

Offline pippo

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 580
  • I love YaBB 1G - SP1!
Re:Von Excel oder Acces in ein Feld
« Antwort #2 am: 16.01.03 - 13:44:37 »
Hallo,

hier ein Beispiel, wie ich von Access in Notes schreibe...


On Error GoTo FehlerH

Rem Verrechnung

Rem Notes
Dim session As Object
Dim dbNotes As Object
Dim view As Object
Dim doc As Object
Dim Item As Object
Dim Profile As Object
Dim userName As Object
Dim userVerRName As Object

Set session = CreateObject("Notes.NOTESSESSION")

Rem Server
Set dbNotes = session.GetDatabase("Servername...", "Pfad..")

Rem Kontrolle Verrechnung
Dim PersVerR As String
Set Profile = dbNotes.GetProfileDocument("Profile_Pro")
PersVerR = Profile.GetFirstItem("PersVerR").Text
If PersVerR = "" Then
    MsgBox "Achtung: in Profildocument der ProjektDB fehlt bei Verrechnung die Person!", vbExclamation, "Raiffeisen"
    Exit Sub
End If
Rem Kontrolle in ProjektDB, ob User berechtigt ist die Verrechnung zu starten
Rem User
Set userName = session.CreateName(session.userName)
Rem berechtigte Person
Set userVerRName = session.CreateName(PersVerR)
If userName.canonical <> PersVerR Then
    MsgBox "Sie sind nicht berechtigt die Verrechnung durchzuführen!" & vbCrLf & vbCrLf & "Berechtigte Person: '" & userVerRName.common & "'", vbExclamation, "Raiffeisen"
    Exit Sub
End If

SendKeys "{RIGHT}"
If MsgBox("Hiermit werden alle gewählten Projekte in der Projektdatenbank in Lotus Notes als 'VERRECHNET' gekennzeichnet." & Chr(13) & Chr(13) & "Verrechnung starten?", vbYesNo + vbQuestion, "Verrechnung") = vbNo Then
    Exit Sub
End If

Rem Schleife über alle Tagesaufwände
Dim db As Database, rs As Recordset
Dim MaxRec As Long, countrec As Long, Rückgabewert As String, NotAkt As Long
Set db = CurrentDb()

Dim rsGroup As Recordset, sql As String
Dim rsDetail As Recordset
Dim rsTag As Recordset
Dim Kriterium As String

Set rsDetail = db.OpenRecordset("Th_AuswPro", DB_OPEN_SNAPSHOT)
Rem Kontrolle Daten vorhanden
If rsDetail.RecordCount = 0 Then
    MsgBox "Keine Daten für Verrechnung vorhanden!", vbExclamation, "Raiffeisen"
    Exit Sub
Else
    rsDetail.MoveLast
    MaxRec = rsDetail.RecordCount
    rsDetail.MoveFirst
End If

Rem Alle Zeilen von Gruppe
sql = "SELECT Th_AuswProGroup.*"
sql = sql & " FROM Th_AuswProGroup"
sql = sql & " WHERE (((Th_AuswProGroup.TagRechNeu) <> ""Später""))"
sql = sql & " ORDER BY Th_AuswProGroup.ProAnwendung, Th_AuswProGroup.ProName, Th_AuswProGroup.TagRech, Th_AuswProGroup.RisF, Th_AuswProGroup.TagAuftragG;"
Set rsGroup = db.OpenRecordset(sql, DB_OPEN_SNAPSHOT)
Rem Kontrolle Daten vorhanden
If rsGroup.RecordCount = 0 Then
    MsgBox "Keine Daten für Verrechnung vorhanden!", vbExclamation, "Raiffeisen"
    Exit Sub
End If

Rem in Tabelle T_Tag wird nun DatRech und TagRech aktualisiert
Set rsTag = db.OpenRecordset("T_Tag", DB_OPEN_DYNASET)

Rem Anzhal Rec insgesamt
countrec = 0
Rem Anzahl der nicht gefundenen Tagesaufwände
NotAkt = 0

Rem Nun werden von jeder Gruppenzeilen die Detailzeilen gesucht und mit Anzahl bei Gruppe verglichen
Do Until rsGroup.EOF
    Rem Detailzeilen werden gesucht über Kriterium:
    sql = "SELECT Th_AuswPro.*"
    sql = sql & " FROM Th_AuswPro"
    sql = sql & " WHERE (((Th_AuswPro.ProID)" & StringOrNull(rsGroup!ProID) & ") AND ((Th_AuswPro.TagRech)" & StringOrNull(rsGroup!TagRech) & ") AND ((Th_AuswPro.RisF)" & StringOrNull(rsGroup!RisF) & ") AND ((Th_AuswPro.TagAuftragG)" & StringOrNull(rsGroup!TagAuftragG) & ") AND ((Th_AuswPro.ProArt)" & StringOrNull(rsGroup!ProArt) & ") AND ((Th_AuswPro.ProStatus)" & StringOrNull(rsGroup!ProStatus) & "));"
    Set rsDetail = db.OpenRecordset(sql, DB_OPEN_DYNASET)
    Rem Kontrolle Anzahl Gruppe - Detail
    If rsDetail.RecordCount <> rsGroup!AnzahlRec Then
        MsgBox "Fataler Fehler! Anzahl Detaildatensätze(" & rsDetail.RecordCount & ") verschieden von Anzahl Gruppe(" & rsGroup!AnzahlRec & ")!", vbExclamation, "Raiffeisen"
        Exit Sub
    Else
        Rem MsgBox rsDetail.RecordCount & " - " & rsGroup!AnzahlRec
    End If

    Do Until rsDetail.EOF
        Rem Nun werden Daten in Notes Aktualisiert
        countrec = countrec + 1
               
        Rem Access
        Rem in Tabelle T_Tag wird nun DatRech und TagRech aktualisiert
        Kriterium = ""
        Kriterium = "[TagID]=" & Chr(34) & CStr(rsDetail!TagID) & Chr(34)
        rsTag.FindFirst Kriterium
        If rsTag.NoMatch Then
            MsgBox "Fataler Fehler TagID in Tabelle T_Tag nicht gefunden - " & CStr(rsDetail!TagID)
            Exit Sub
        Else
            Rem Kontrolle ID
            If rsDetail!TagID <> rsTag!TagID Then
                MsgBox "Fataler Fehler! ID von T_Tag und von rsDetail sind verschieden"
                Exit Sub
            End If
            Rem Kontrolle Flag TagRechNeu in Th_AuswProGroup
            If rsGroup!TagRechNeu <> "Ja" And rsGroup!TagRechNeu <> "Nein" And rsGroup!TagRechNeu <> "Später" Then
                MsgBox "Fataler Fehler! Falsches Kennzeichen in rsGroup - TagRechNeu - " & rsGroup!TagRechNeu & " - ProID: " & CStr(rsGroup!ProID)
                Exit Sub
            End If
            Rem Kontrolle Flag TagRech in Th_AuswPro
            If rsDetail!TagRech <> "Ja" And rsDetail!TagRech <> "Nein" Then
                MsgBox "Fataler Fehler! Falsches Kennzeichen in rsDetail - TagRech - " & rsDetail!TagRech & " - TagID: " & CStr(rsDetail!TagID)
                Exit Sub
            End If
            Rem TagRech von T_Tag und rsDetail mup identisch sein
            If rsDetail!TagRech <> rsTag!TagRech Then
                MsgBox "Fataler Fehler! TagRech in T_Tag und rsDetail unterschiedlich - darf nicht sein" & rsDetail!TagRech & " - " & rsTag!TagRech & " - TagID: " & CStr(rsDetail!TagID)
                Exit Sub
            End If
           
            If rsGroup!TagRechNeu = "Ja" Or rsGroup!TagRechNeu = "Nein" Then
                Rem Zugriff auf Notes
                Rem Tagesaufwand in Projektdb wird gesucht
                               
                Rem Wird gemacht, weil es vorkommen kann, daß es in der ProDB bestimmte IDs nicht mehr gibt - weil sie eben gelöscht wurden - in der Regel kommt das nicht vor
                Set doc = Nothing
                Set doc = dbNotes.GetDocumentByUNID(CStr(rsDetail!TagID))
           
                If Not (doc Is Nothing) Then
                    Rem Sofern auf Fom TagRechNeu geändert wird, so muß das in T_Tag und in Notes geschrieben werden
                    rsTag.Edit
                        If rsTag!TagRech <> rsGroup!TagRechNeu Then
                            Rem Access
                            Rem Alter Wert wird in OlD Feld geschrieben
                            rsTag!TagRechOLD = rsTag!TagRech
                            rsTag!TagRech = rsGroup!TagRechNeu
                            Rem Notes
                            Set Item = doc.ReplaceItemValue("TagRech", CStr(rsTag!TagRech))
                            Set Item = doc.ReplaceItemValue("TagRechOLD", CStr(rsTag!TagRechOLD))
                        End If
                        Rem Access
                        Rem Datum wird immer geschrieben
                        rsTag!DATRECH = CDate(Format(Now, "dd.mm.yyyy"))
                    rsTag.Update
                   
                    Rem Notes
                    Rem Felder werden geschrieben
                    Rem Verrechnungsdatum
                    Set Item = doc.ReplaceItemValue("DatRech", CDate(rsTag!DATRECH))
                   
                    Rem Neu + + + + + + 10.01.2003
                    Rem Stundensatz und Betrag wird geschrieben
                    Set Item = doc.ReplaceItemValue("ResStSatz", CDbl(rsTag!ResStSatz))
                    Set Item = doc.ReplaceItemValue("Betrag", CDbl(rsTag!Betrag))
                    Rem Neu + + + + + + 10.01.2003
                   
                    Call doc.Save(True, False)
               
                End If
            ElseIf rsGroup!TagRechNeu = "Später" Then
                Rem in diesem Fall wird nichts gemacht
            Else
                MsgBox "Fehler in rsgroup - TagRechNeu - neuers Kennzeichen - " & rsGroup!TagRechNeu
                Exit Sub
            End If

        End If
       
        Rem Statuszeile
        Rückgabewert = SysCmd(SYSCMD_INITMETER, "Daten werden auf Notes aktualisiert: " & CStr(MaxRec - countrec), MaxRec)
        Rückgabewert = SysCmd(SYSCMD_UPDATEMETER, countrec)
   
        rsDetail.MoveNext
    Loop
   
    rsGroup.MoveNext
Loop

Rem Form wird neu berechnet
Me!Schaltfläche0.SetFocus
Call Akt_FormAuswPro("")

MsgBox "Daten auf Notes erfolgreich aktualisiert!", vbExclamation, "Gesamtanzahl Tagesaufwände: " & countrec & "; nicht gefundene Tagesaufwände: " & NotAkt
Rückgabewert = SysCmd(SYSCMD_SETSTATUS, " ")
Exit Sub

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz