title image


Smiley Re: von VB-Textfeld aus ein Textfeld in Access ändern
Hallo Peter,

Hier folgende Anleitung:





Erstelle ein neues Verzeichnis für unser Beispiel und in diesem Verzeichnis eine MS-Access Datenbank namens "MeineDatenbank.mdb".



Füge der neu erstellten Access-Applikation ein Formular hinzu und nenne es "MeinFormular". Das Formular kann gebunden oder ungebunden sein.



Dem Formular fügst Du ein Textfeld namens "MeinTextfeld" hinzu.



Erstelle ein neues Visual Basic Projekt.



Dem Standardmäßig erstellten Formular Form1 fügst Du eine Schaltfläche ("Command1") hinzu.



Form1 erhält diesen Code:

Option ExplicitDim mobjAccess As Access.Application Private Sub Command1_Click()    InitializeAccess    ShowAccess mobjAccess    mobjAccess.DoCmd.OpenForm ("MeinFormular")    mobjAccess.Forms("MeinFormular").Controls("MeinTextfeld").Value = "Hallo Welt"End Sub'-------------------------------------------------- Private Sub Form_Unload(Cancel As Integer)    TerminateAccessEnd Sub'-------------------------------------------------- Private Sub InitializeAccess()    Dim sDatabaseName As String On Error Resume Next    ' Verweis auf bereits laufende Access-Anwendung anlegen:    If mobjAccess Is Nothing Then Set mobjAccess = GetObject(, "Access.Application")    ' Falls Access zur Zeit nicht läuft, tritt ein Laufzeitfehler auf.On Error GoTo 0    ' Oder einen neuem Verweis erstellen:    If mobjAccess Is Nothing Then Set mobjAccess = CreateObject("Access.Application")    'If mobjAccess Is Nothing Then Set mobjAccess = New Access.Application     sDatabaseName = App.Path & "\MeineDatenbank.mdb" On Error Resume Next    Dim sTest As String, fOpenDatabaseRequired As Boolean    sTest = mobjAccess.CurrentDb.Name    If Err Then        fOpenDatabaseRequired = True    End If On Error GoTo 0    If fOpenDatabaseRequired Then        mobjAccess.OpenCurrentDatabase sDatabaseName, False    ElseIf LCase(mobjAccess.CurrentDb.Name) <> LCase(sDatabaseName) Then        mobjAccess.OpenCurrentDatabase sDatabaseName, False    End IfEnd Sub'-------------------------------------------------- Private Sub TerminateAccess()On Error Resume Next    mobjAccess.CloseCurrentDatabase    mobjAccess.Quit    Set mobjAccess = NothingEnd Sub'-------------------------------------------------- 



Füge dem Projekt ein Standardmodul hinzu und statte es mit folgenden Code aus:

Option Explicit Private Declare Function SetForegroundWindow Lib "User32" _  (ByVal hWnd As Long) As LongPrivate Declare Function IsIconic Lib "User32" _  (ByVal hWnd As Long) As LongPrivate Declare Function ShowWindow Lib "User32" _  (ByVal hWnd As Long, ByVal nCmdShow As Long) As LongPrivate Const SW_NORMAL = 1     'Show window in normal sizePrivate Const SW_MINIMIZE = 2   'Show window minimizedPrivate Const SW_MAXIMIZE = 3   'Show window maximizedPrivate Const SW_SHOW = 9       'Show window without changing window size '----------------------------------------------------------------------'This procedure brings the instance of Microsoft Access referred to'as "instance" into view. The instance's window size can be SW_NORMAL,'SW_MINIMIZE, SW_MAXIMIZE, or SW_SHOW. If size is omitted, the window is'not changed (SW_SHOW). To call this function, use this syntax:'ShowAccess instance:=objAccess, size:=SW_SHOW'----------------------------------------------------------------------Sub ShowAccess(instance As Object, Optional size As Variant)    Dim hWnd As Long, hResult As Long     If IsMissing(size) Then size = SW_SHOW On Error Resume Next    If Not instance.UserControl Then instance.Visible = TrueOn Error GoTo 0 'turn off error handler     hWnd = instance.hWndAccessApp    hResult = SetForegroundWindow(hWnd)    If size = SW_SHOW Then 'keep current window size         If IsIconic(hWnd) Then hResult = ShowWindow(hWnd, SW_SHOW)    Else         If IsIconic(hWnd) And size = SW_MAXIMIZE Then _           hResult = ShowWindow(hWnd, SW_NORMAL)         hResult = ShowWindow(hWnd, size)    End IfEnd Sub'-------------------------------------------------- 



Ausprobieren!





Dieses Beispiel schreibt den Text "Hallo Welt" in das Textfeld des Access-Formulares. Der Code ist in der OnClick - Routine einer Befehlsschaltfläche untergebracht. Wenn Du das Automatisieren wills, verwendest Du die OnChange - Ereignisprozedur eines Textfeldes (z.B. "Text1_Change()").



Übrigens findest Du unter http://spotlight.de/nzforen/amvb/m/amvb-1010604157-29711.html einen ähnlichen Beitrag von mir, der sich mit dem Thema "Access Bericht drucken aus VB6" beschäftigt.
Thomas Prötzsch

geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: