vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevAniGif - als kostenlose Vollversion auf unserer vb@rchiv CD Vol.5  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Visual-Basic Einsteiger
So da isses Maschinchen  
Autor: unbekannt
Datum: 30.09.01 15:46

Hi WebMeister,


also wie ich das Ganze verstehe, geht es darum, eine Excel-Tabelle schnell nach einer bestimmten CD zu scannen.


Let's go:


Wir eröffnen ein neues Projekt.


Wir fügen folgende Verweise in das Projekt ein (Menü: Projekt/Verweise):

A) Einen Verweis auf die Microsoft DAO 3.n ObjektLibrary

B) Einen Verweis auf Microsoft Excel n.0 Objektlibrary


unter A, z.B. 3.51 oder 3.5 oder 3.6

unter B, z.B. 8.0 für Excel '97 oder 9.0 für Excel 2000


Das Projekt hat bereits beim eröffnen eine Form eingefügt, die verwenden wir. Wir drücken F7 um in den Codeteil der Form zu gelangen, zuvor fügen wir aber in die Form folgende Controls ein:

Combobox. Eigenschaft Name auf dftxtCDNr setzen
Combobox. Eigenschaft Name auf dftxtKategorie setzen
Combobox. Eigenschaft Name auf dftxtCDName setzen


Die drei Comboboxen hübsch nebeneinander plazieren


Textbox. Eigenschaft Name auf txtSearch setzen.


Die Textbox plazieren unterhalb der o.g. drei Textboxen.


Über den ersten drei Textboxen sollten noch Label's hinzugefügt werden,
die den Inhalt der Textboxen kennzeichen. Überhalb - oder neben der vierten Textbox ein Label: Caption: "Suchbegriff". Die Label's sind für den Programmablauf aber unkritisch.


Eine Schaltfläche einfügen. Button1 auf cmdSearchStart umbenennen.

Caption: Suchen


Drei weitere Schaltflächen: cmdNeu, cmdAend und cmdLoesch.


Captions: Neu, Ändern. Löschen


Alles schön sauber anorden - (fürs Auge!).


Jetzt drücken wir F7!!!
Im allgemeinen Teil des Codes deklarieren wir:


Private DB As Database
Private Rs As Recordset
Private Const WMAP As String = "Name_der_Arbeitsmappe"
Private Const WSHEET As String = "Name_der_Tabelle"<br>
<br>
??? - Richtig verstanden! Wir gehen mit Excel so um, als sei es eine Datenbank!
<pre><code>Private Sub ClearAll()
  Dim Target As Control
  Dim f As Integer
  For Each Target In Form1.Controls
     f = InStr(Target.Name,"txt")
     If f > 0 Then Target.Text=""
  Next
End Sub
 
Private Sub Form_Activate()
   LadeAlles
End Sub
Nun werden die Listboxen synchronisiert:

Private Sub dftxtcdname_Click()
   Dim nr As Long
    nr = dftxtcdname.ListIndex
    dftxtCDnr.ListIndex = nr
    dftxtKategorie.ListIndex = nr
End Sub
 
Private Sub dftxtCDnr_Click()
    Dim nr As Long
    nr = dftxtCDnr.ListIndex
    dftxtcdname.ListIndex = nr
    dftxtKategorie.ListIndex = nr
End Sub
 
Private Sub dftxtKategorie_Click()
    Dim nr As Long
    nr = dftxtKategorie.ListIndex
    dftxtcdname.ListIndex = nr
    dftxtCDnr.ListIndex = nr
End Sub
Die Suchmaschine:


Private Sub cmdSearchStart_Click()
   Dim SQL As String, a As String
   Dim lkBool As Boolean
   Dim nrs As Recordset
   Dim i As Long
   Dim janein As Variant
 
   If txtsearch.Text = "" Then
      MsgBox "Sie haben keinen Suchbegriff eingegeben.", vbInformation, "Suche" & _
        "Stopp"
      txtsearch.SetFocus
      Exit Sub
   End If
 
   'Wurde eine Zahl angegeben,wird nach CD NR gesucht.
   'Wurde Text eingegeben, so wird nach CD Name gesucht.
   If IsNumeric(txtsearch.Text) Then
      SQL = "[CD Nr] = " & txtsearch.Text
   Else
      lkBool = False
      If InStr(txtsearch.Text, "*") <> 0 Then lkBool = True
      If InStr(txtsearch.Text, "?") <> 0 Then lkBool = True
      If lkBool Then
         a = " Like "
      Else
         a = " = "
      End If
      SQL = "[CD Name]" + a + "'" + txtsearch.Text + "'"
   End If
 
   'Excel-Arbeitsmappe als ISAM-Datenquelle öffnen
    Set db = DBEngine.OpenDatabase(WMap, False, False, "Excel 8.0;")
 
    'Exceltabellen enthalten immer ein $-Zeichen
    ExlTab = WSHEET + "$"
 
    Set rs = db.OpenRecordset(ExlTab, dbOpenDynaset)
 
    If Not rs.EOF Then
       rs.Filter = SQL
       Set nrs = rs.OpenRecordset(dbOpenDynaset)
       If Not nrs.EOF Then
          With nrs
            .MoveLast
            .MoveFirst
            janein = MsgBox("Es wurden " + Trim(Str(.RecordCount)) + _
                          "Datensätze gefunden. Sollen die Datensätze geladen" & _
                          "werden?", _
                          vbQuestion + vbYesNo, "Suchergebnis:")
             If janein = vbNo Then
                db.Close
                Exit Sub
             End If
             dftxtCDnr.Clear
             dftxtcdname.Clear
             dftxtKategorie.Clear
             ClearAll
             For i = 0 To .RecordCount - 1
                dftxtCDnr.AddItem nrs.Fields(0).Value
                dftxtcdname.AddItem nrs.Fields(1).Value
                dftxtKategorie.AddItem nrs.Fields(2).Value
             Next
          End With
       End If
    End If
End Sub
Private Sub Ladealles()
   Dim ExlTab As String
    Dim DS As Long, i As Long
 
    'Excel-Arbeitsmappe als ISAM-Datenquelle öffnen
    Set DB = DBEngine.OpenDatabase(WMap, False, False, "Excel 8.0;")
 
    'Exceltabellen enthalten immer ein $-Zeichen
    ExlTab = WSHEET + "$"
 
    Set Rs = DB.OpenRecordSet(ExlTab, dbOpenDynaset)
 
    'Inhalt der Tabelle in die ComboBoxen laden:<br>
    If Not Rs.EOF Then
       Rs.MoveLast
       Ds = Rs.Recordcount
       Rs.MoveFirst
    End If
    For i = 0 To Ds - 1
        dftxtCDNr.AddItem Rs.Fields(0)
        dftxtKategorie.AddItem Rs.Fields(1)
        dftxtCDName.AddItem Rs.Fields(2)
        Rs.MoveNext
    Next
End Sub
Kurze Erläuterung: Werden Feldnamen, wie z.B. CD Nr mit einem Leerzeichen oder anderem Zeichen: CD-Nr angegeben, so muß der Feldnamen
mit [ ] eingeschlossen sein.


Cu
Lordchen
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Ich habe (fast) fertig...55WebMassa30.09.01 13:19
Excel-Proggie, heißt das ...380unbekannt30.09.01 13:27
Re: Excel-Proggie, heißt das ...27WebMassa30.09.01 13:37
Re: Excel-Proggie, heißt das ...304unbekannt30.09.01 13:45
ÄÄÄhhhhmmm.....35WebMassa30.09.01 13:50
Re: ÄÄÄhhhhmmm.....285unbekannt30.09.01 13:53
JO, Webbi wartet........(oT)27WebMassa30.09.01 13:56
Installierbares ISAM?269unbekannt30.09.01 14:02
Re: Installierbares ISAM?27WebMassa30.09.01 14:05
Execl am start...33WebMassa30.09.01 14:08
MhM, kleiner Test:276unbekannt30.09.01 14:17
Re: MhM, kleiner Test:25WebMassa30.09.01 14:23
Das ist ja der Trick ....243unbekannt30.09.01 14:43
Was hälst du von...83WebMassa30.09.01 14:47
Re: Was hälst du von...263unbekannt30.09.01 15:03
OK, ich höhre auf Lordchen...(oT)26WebMassa30.09.01 15:09
So da isses Maschinchen 364unbekannt30.09.01 15:46
Vielen, Vielen Dank aber...27WebMassa30.09.01 16:41
Re: Vielen, Vielen Dank aber...242unbekannt30.09.01 16:59
Fehlernummer im Klartext51WebMassa30.09.01 17:07
Re: Fehlernummer im Klartext306unbekannt30.09.01 19:07

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel