2011-04-15 8 views
0

私は、データ入力フォームを持っています。そこではデータの書類がクライアントIDを入力します。クライアントIDは各クライアントに固有です。私は現在重複しているIDをトラップしており、店員が検索フォームに行き、重複したIDを探してそれが実際に同じ人であり、データを入力するエラーではないことを確認します。私はむしろ、データ入力フォームに入力されたクライアントIDに基づいて、データ入力フォームの新しいインスタンスを開きます。新しいインスタンスを開くことはできますが、クライアントIDに基づいてクライアントデータを表示する方法がわかりません。最初のフォームのフィールドのデータに基づいてフォームの新しいインスタンスを開きます

答えて

0

スクリーンペイントをオフにする以外には、これを行うには良い方法はありません。ここに私のアプリの一つからいくつかのコードがあります:あなたは、フォームの複数のインスタンスを追跡し、正しいものを閉じる必要がありますよう

Dim frm As Form_frmInventory 
    Dim strRecordsource As String 
    Dim intType As Integer 

    DoCmd.Hourglass True 
    Application.Echo False 
    Set frm = New Form_frmInventory 
    frm!boxHeader.BackColor = 3276900 ' 5483007 
    frm!boxFooter.BackColor = 3276900 ' 5483007 
    strRecordsource = "SELECT qryInventoryForm.*, varZLStoNull(IIf([tblInventory].[InventoryClass] In ('BKS','FAC','MTH','MUS','REF','SSC'),[Creator] & [Dates] & OtherAuthors([OtherAuthors]))) AS BibCreator, CreatorDates([Birth],[Death],[OtherAuthors]) AS Dates, varZLStoNull(Trim(nz(UCase([tblBib_Authors].[LastName]) & IIf(Not IsNull([tblBib_Authors].[FirstName]),', ') & [tblBib_Authors].[FirstName],'Anon.'))) AS Creator, tblBib_Authors.CreatorCategories, Nz([CreatorSort],[LastName] & [FirstName]) AS NameSort FROM qryInventoryForm LEFT JOIN tblBib_Authors ON qryInventoryForm.CreatorID = tblBib_Authors.CreatorID WHERE ([quantity]>0 Like getSold()) AND (qryInventoryForm.InventoryID=" & lngInventoryID & ") ORDER BY Nz([CreatorSort],[LastName] & [FirstName]), InventoryClass, ShortTitle;" 
    frm.RecordSource = strRecordsource 
    ' need to change the caption and disable certain things 
    frm.Caption = frm.Caption & " -- " & frm!InventoryClass & "-" & Nz(frm!InventoryNo, Format(frm!InventoryID, "00000")) 
    frm!fldShortTitle.SetFocus 
    frm!cmbClassFind.Enabled = False 
    frm!cmbCreatorFind.Enabled = False 
    frm!cmbInventoryNumber.Enabled = False 

    [etc.] 

    frm.Visible = True 
    GoTo exitRoutine 

    CloseForm: 
    Call CloseForm(Me, True) 

    exitRoutine: 
    Application.Echo True 
    DoCmd.Hourglass False 
    Exit Sub 

CloseForm()サブは、かなり重要です。私はADH97からコードを入手し、そこから調整しました(基本的なこと)。

Set frm = New Form_frmInventoryでインスタンス化されたフォームが明示的に表示されない限り、そのコードからは表示されます(詳細は忘れてしまいました)。これはプラスです。スクリーンをオフにする必要はありません(つまり、Application.Echo False)が、スムーズに見えるようにする必要があることを思い出しています。私の記憶は、フォームが通常の色で表示され、背景色がコードが実行されたときに視覚的に変化するということです。これはであることを示しています。なぜ、フォームを明示的に表示する必要があるのか​​わかりません。

とにかく、それはあなたが始めるはずです、私は思う!

+0

ご協力いただきありがとうございます – mizor

関連する問題