vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Brandneu! sevEingabe v3.0 - Das Eingabecontrol der Superlative!  
 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
Teil 1: Done. 
Autor: unbekannt
Datum: 12.01.02 16:05

Hi Atlan,

mal ein Ansatz:

1. Trick:


Wir fassen alle Textfelder des Formulars, die die Daten enthalten zu einem Steuerelementefeld zusammen. Txt(0)

2. Trick:


Wir fassen alle Datenfelder in einen Datensatz zusammen, in eine UDT oder benutzerdefinierten Datentyp:

Private Type Adr
    SatzNummer   As Variant
    Name         As String * 75
    Vorname      As String * 50
    Strasse      As String * 75
    PLZ          As String * 10
    Wohnort      As String * 75
    Land         As String * 50
    Telefon_P    As String * 15
    Telefon_G    As String * 15
    Handy        As String * 15
    Fax          As String * 15
    MailAddresse As String * 125
    HomePage     As String * 255
    Sonstiges    As String * 255
    Bemerkungen  As String * 255
    Formular     As String * 10
'   ......................  1295 Bytes
End Type
 
Private Addressen As Adr

3. Trick:


Wir merken uns beim Speichern, wohin das einzelne Datenfeld des Datensatzes gehört, und zwar so:

Private Sub SaveAll(oTxt() As TextBox)
   Dim F As Byte
   Dim DSNr As Long
   Dim i As Integer
 
   For i = 0 To UBound(oTxt)
      With Addressen
        Select Case i
           Case 0
              .SatzNummer = oTxt(i).Text & ";0;"
           Case 1
              .Name = oTxt(i).Text & ";1;"
           Case 2
              .Vorname = oTxt(i).Text & ";2;"
           Case 3
              .Strasse = oTxt(i).Text & ";3;"
           Case 4
              .PLZ = oTxt(i).Text & ";4;"
           Case 5
              .Wohnort = oTxt(i).Text & ";5;"
           Case 6
              .Land = oTxt(i).Text & ";6;"
           Case 7
              .Telefon_P = oTxt(i).Text & ";7;"
           Case 8
              .Telefon_G = oTxt(i).Text & ";8;"
           Case 9
              .Handy = oTxt(i).Text & ";9;"
           Case 10
              .Fax = oTxt(i).Text & ";10;"
           Case 11
              .MailAddresse = oTxt(i).Text & ";11;"
           Case 12
              .HomePage = oTxt(i).Text & ";12;"
           Case 13
              .Sonstiges = oTxt(i).Text & ";13;"
           Case 14
               .Bemerkungen = oTxt(i).Text & ";14;"
           Case 15
               .Formular = oTxt(i).Text & ";15"
        End Select
      End With
   Next
 
   F = FreeFile()
   On Error GoTo FileError
   Open "Adressen.TXT" For Random As #F Len = Len(Adr)
   On Error GoTo 0
     'Anzahl Datensätze ermitteln:
     If LOF(F) > 1 Then
        DSNr = (LOF(F) / Len(Adr))+ 1
     Else
        DSNr = 1
     End If
 
     If oTxt(0).Text <> "" Then DSNr = Val(oTxt(0).Text)
     'Datensatz speichern
     Put #F, DSNr, Addressen
   Close #F
   Exit Sub
 
FileError:
   MsgBox "Die Adressdatei konnte nicht gefunden oder geöffnet werden!", _
     vbExclamation, "Dateifehler"
End Sub
Zugegeben, die Speicherung ist wegen der UDT etwas umfangreicher, aber die Kürze erfolgt im Laden und Suchen Ist aber nur, weil wir ja irgendwann der
UDT endlich die Daten zuweisen müssen - es soll nicht wieder vorkommen!

4. Trick


Weil wir in Trick 3 so "fleißig" waren, werden wir für die Mühe auch belohnt. Aber noch nicht so ganz,ein winziges Toolchen wird noch benötigt:
Etwas WinAPI,

Private Declare Sub CopyMem Lib "kernel32" Alias "RtlMoveMemory" _
     (lpvDest As Any, _
      lpvSource As Any, _
      Byval cbCopy As Long)
 
Private Function ConvertUDT(oUDT As Adr) As String
    Dim s As String
    s = Space(Len(Addressen))
    CopyMem Byval s, oUDT, Len(Addressen)
    ConvertUDT = s
End Function

5. Trick:


Weil wir noch "fleißiger" waren, jetzt der Clou:
Private Sub LoadDS(Byval sNr As Long, oTxt() As TextBox)
   Dim vErg As Variant
   Dim F As Byte
   Dim n As Integer
   Dim i As Long
   Dim S As String
 
   F = FreeFile()
   On Error Goto FileError
   Open "Adressen.TXT" For Random As #F Len = Len(Addressen)
   On Error Goto 0
       Get #F,sNr,Addressen
   Close #F
 
   S = ConvertUDT(Addressen)
   vErg = Split(s,";") 'na Trickreich was :-)
   For i = 0 To UBound(vErg) Step 2
      oTxt(n) = Trim(vErg(i))
      n = n + 1
   Next
 
   Exit Sub
FileError:
   MsgBox "Fehler beim Öffnen der Datei.",vbExclamation,"Dateifehler"
End Sub
cu
Lordchen
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Text einlesen 293Atlan12.01.02 00:43
Na, da wollen wir Dich vor einem schweren Designfehler schüt...239unbekannt12.01.02 12:35
Teil 1: Done.245unbekannt12.01.02 16:05
Re: Teil 2: Done.235unbekannt12.01.02 16:35
Re: Teil 3: Done.251unbekannt12.01.02 16:45
Re: Teil 4: Done.216unbekannt12.01.02 17:28
Das war's mal, aber:224unbekannt12.01.02 17:36
Re: Das war's mal, aber:37Atlan12.01.02 21:27
Wieso, das ist doch keine Datenbank? Naja, ich fasse es mal ...261unbekannt12.01.02 21:35
Re: Wieso, das ist doch keine Datenbank? Naja, ich fasse es ...72Atlan13.01.02 00:10
Re: Wieso, das ist doch keine Datenbank? Naja, ich fasse es ...239unbekannt13.01.02 00:23
Re: Wieso, das ist doch keine Datenbank? Naja, ich fasse es ...68Atlan13.01.02 01:46
Re: Wieso, das ist doch keine Datenbank? Naja, ich fasse es ...214unbekannt13.01.02 01:48
Komplett und funkt 345unbekannt13.01.02 15:03
Re: Komplett und funkt 48Atlan13.01.02 16:07
Na, löschen wir mal ...432unbekannt13.01.02 18:11
Re: Na, löschen wir mal ...42Atlan13.01.02 18:36
Re: Na, löschen wir mal ...284unbekannt13.01.02 19:11
Re: Na, löschen wir mal ...38Atlan13.01.02 20:09
Re: Na, löschen wir mal ...240unbekannt13.01.02 20:15
Re: Na, löschen wir mal ...58Atlan13.01.02 21:10
Re: Na, löschen wir mal ...252unbekannt14.01.02 00:22
Re: Na, löschen wir mal ...44Atlan14.01.02 23:37
Re: Na, löschen wir mal ...35Atlan16.01.02 09:56
Re: Na, löschen wir mal ...43Atlan16.01.02 19:59
Hi ... Hi ....439unbekannt16.01.02 20:06
Re: Hi ... Hi ....46Atlan16.01.02 21:50
So isses ... fast ... Good work! (oT)240unbekannt16.01.02 21:55
Naja, wenn einige bei Snake so mitgedacht hätten ... uiii361unbekannt16.01.02 22:11
Re: Naja, wenn einige bei Snake so mitgedacht hätten ... uii...44Atlan17.01.02 10:56
Hi Lordchen37Atlan20.01.02 11:29

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