萍聚社区-德国热线-德国实用信息网

 找回密码
 注册

微信登录

微信扫一扫,快速登录

萍聚头条

123
返回列表 发新帖
楼主: joed

[计算机] 求教一个数据库的问题.

[复制链接]
 楼主| 发表于 2007-1-17 12:06 | 显示全部楼层
hi.
这道题终于有个眉目了:
在窗体上设立4个按键:
Gesamt_Auflistung, Stufen_Auflistung, Übersichts_Auflistung, Neuanlage tblZielTest

然后输入如下代码就行了:

Option Compare Database
Option Explicit
Dim bGefunden As Boolean
Dim bEnde As Boolean
Dim RettSchluessel(99)
Dim RettOberElement(99) As String
Dim RettMultiplikator(99) As Integer

Dim iStufe As Integer
Dim i As Integer

Dim stDocName As String

Dim OrigRst As DAO.Recordset
Dim ZielRst As DAO.Recordset

Private Sub Gesamt_Auflistung_Click()
        
    Bearb_Ziel
    stDocName = "rptZiel_Gesamt"
    DoCmd.OpenReport stDocName, acViewPreview

End Sub

Private Sub Bearb_Ziel()
    bGefunden = False
    bEnde = False
        
    Set OrigRst = CurrentDb.OpenRecordset("tblOriginal")
    Set ZielRst = CurrentDb.OpenRecordset("tblZiel")
               
    ' Loesche Zieltabelle "besonders quick and dirty"
    Do Until ZielRst.EOF
        ZielRst.Delete
        ZielRst.MoveNext
    Loop
   
    iStufe = 0
    RettMultiplikator(iStufe) = 1
   
    ' Lesen o-Datei mit Formularkey
   
    OrigRst.Index = "OberElement"
   
    OrigRst.Seek "=", Me.OberElement
   
    If OrigRst.NoMatch Then
        bEnde = True
    Else
        bGefunden = True
    End If
   
    Do Until bEnde
        If bGefunden Then
            ' Schreiben Zieltabelle
            ZielRst.AddNew
            ZielRst!UnterElement = OrigRst!UnterElement
            ZielRst!OrigAnzahl = OrigRst!Anzahl
            If iStufe = 0 Then
                ZielRst!Anzahl = OrigRst!Anzahl
            Else
                ZielRst!Anzahl = OrigRst!Anzahl
                'Multiplikation der Mengen mit den Vorstufen
                For i = iStufe To 1 Step -1
                   ZielRst!Anzahl = ZielRst!Anzahl * RettMultiplikator(iStufe - i)
                Next
            End If
            ZielRst!Stufe = iStufe
            
            ZielRst.Update
            
            RettSchluessel(iStufe) = OrigRst.Bookmark
            RettOberElement(iStufe) = OrigRst!OberElement
            RettMultiplikator(iStufe) = OrigRst!Anzahl
        End If
        
        ' Lesen Orig-Datei mit UE-Schluessel
        
        OrigRst.Seek "=", OrigRst!UnterElement
        
        If OrigRst.NoMatch Then
            AltePosUndNaechsten
        Else
            bGefunden = True
            iStufe = iStufe + 1
        End If
                       
    Loop
        
OrigRst.Close
ZielRst.Close

End Sub

Private Sub AltePosUndNaechsten()
    bEnde = False
    bGefunden = False
   
    Do Until bEnde = True Or bGefunden = True
   
        OrigRst.Bookmark = RettSchluessel(iStufe)
        OrigRst.MoveNext
        If Not OrigRst.EOF Then
            If OrigRst!OberElement = RettOberElement(iStufe) Then
                bGefunden = True
            Else
                If iStufe > 0 Then
                    iStufe = iStufe - 1
                Else
                   bEnde = True
                End If
            End If
        Else
            If iStufe > 0 Then
                iStufe = iStufe - 1
            Else
                bEnde = True
            End If
        End If
    Loop
   
End Sub

Private Sub Neuanlage_Click()
   
     ' Neuanlage tblZielTest
    Dim conn As ADODB.Connection
    Dim Info As Integer
   
    Set conn = CurrentProject.Connection
        ' Pruefung des Zustandes eines Datenbankobjektes
    '       0 = nicht geoeffnet oder nicht vorhanden
    '       1 = geoeffnet
    '       2 = geaendert, aber nicht gespeichertacSysCmdGetObjectState
    '       4 = Neu
    Info = SysCmd(acSysCmdGetObjectState, acTable, "tblZielTest")
   
    'Select Case Info
    'Case Is = 0
        ' Datei nicht vorhanden
    '    conn.Execute "DROP TABLE tblZielTest"
    'Case Is = 1
    '    conn.Execute "DROP TABLE tblZielTest"
    'Case Else
    '    MsgBox "Die Tabelle tblZielTest kann nicht geloescht werden"
    'End Select
   
    On Error GoTo Fehler
    conn.Execute "DROP TABLE tblZielTest"
   
    conn.Execute "CREATE TABLE tblZielTest " _
            & "(Autowert Counter, " _
            & "Unterelement char(10), " _
            & "Anzahl Integer, " _
            & "OrigAnzahl integer)"
   
    Set conn = Nothing
   
    GoTo FehlerEnde
   
Fehler:
    Select Case Err.Number
    Case Is = -2147217865
        MsgBox "Datei war nicht vorhanden"
        Resume Next
    Case Else
        Resume Next
    End Select
   
FehlerEnde:
   
End Sub

Private Sub Stufen_Auflistung_Click()
   
    Bearb_Ziel
    stDocName = "rptZiel_Stufe"
    DoCmd.OpenReport stDocName, acViewPreview

End Sub

Private Sub Uebersichts_Auflistung_Click()
   
    Bearb_Ziel
    stDocName = "rptZiel_uebersicht"
    DoCmd.OpenReport stDocName, acViewPreview
   
End Sub
$ok$
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
您需要登录后才可以回帖 登录 | 注册 微信登录

本版积分规则

手机版|Archiver|AGB|Impressum|Datenschutzerklärung|萍聚社区-德国热线-德国实用信息网 |网站地图

GMT+2, 2024-5-18 05:57 , Processed in 0.050666 second(s), 16 queries , MemCached On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表