Visual Basic - Base de datos .dat

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil
Val: 6
Ha aumentado su posición en 9 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Base de datos .dat

Publicado por alejo (4 intervenciones) el 27/01/2019 17:49:24
Buenos dias a todos. le agradeceria que me pudieran ayudar, mi problema es el siguiente, en un programa de visual basic cree un autotexto para ir agragando palabras que esten dentro de mi base de datos asi que cuando escriba "Al" el muestre las palabras que estan en mi base de datos que empiesen por esa letra, ya lo hice me muestra "Alberto, Alcazar... etc", el problema radica en dos cosas, una es que cuando esta selecionada la palabra tengo que dar flecha derecha para seleccionarlo y en vez de eso quisiera darle espacio y nada mas. y lo otro es si puedo hacer que de alguna manera ponga a manera de ir selecionando una opcion este pueda agregarle o subirlo de prioridad, por decir que cuando vaya escribiendo Al y selecione Alcazar, la segunda vez que escriba Al me aparezca Alcazar en vez de Alberto, es decir, me guarde de alguna forma la palabra que escoji como primera opcion, aqui les dejo una imagen y parte del codigo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
Option Explicit
 
Dim arrValues() As String
 
'Flag para la tecla BackSpace
Private bKeyBack As Boolean
 
Public Function AutoCompletar_TextBox( _
    textBox As textBox, pArrValues() As String)
 
Dim i As Integer
Dim posSelect As Integer
 
    Select Case (bKeyBack Or Len(textBox.Text) = 0)
        Case True
            bKeyBack = False
            Exit Function
    End Select
    With textBox
        'Recorremos todos los elementos del array
        For i = 0 To UBound(pArrValues)
            ' Buscamos coincidencias
            If InStr(1, pArrValues(i), .Text, vbTextCompare) = 1 Then
                posSelect = .SelStart
                ' asignar el texto de array al textbox
                .Text = pArrValues(i)
 
                ' seleccionar el texto
                .SelStart = posSelect
                .SelLength = Len(.Text) - posSelect
                Exit For ' salimos del bucle
            End If
        Next i
 
    End With
End Function
 
' Rutina para guardar los valores en el archivo de historial
Sub saveValues(pArrValues() As String, NewValue As String)
 
    Dim lIndex As Long
    ' redimensionar y preservar el array para añadir el nuevo valor
    lIndex = UBound(pArrValues) + 1
    ReDim Preserve pArrValues(lIndex)
 
    pArrValues(lIndex) = NewValue
 
    ' Abrir el archivo para guardar los datos
    Open App.Path & "\history.dat" For Output As #1
 
    Dim i As Integer
 
    ' recorrer le vector
    For i = 0 To UBound(pArrValues)
        If pArrValues(i) <> "" Then
            Print #1, pArrValues(i)
        End If
    Next
 
    Close
 
End Sub
 
' rutina para cargar los valores desde el archivo .dat
Sub LoadValues(pArrValues() As String)
 
    Dim lIndex As Long
    Dim sValue As String
 
    Dim sPath As String
 
    sPath = App.Path & "\history.dat"
 
    If Len(Dir(sPath)) = 0 Then
       Exit Sub
    End If
 
    ' Abrir el archivo para guardar los datos
    Open App.Path & "\history.dat" For Input As #1
 
    ' leer las lines del archivo
    While Not EOF(1)
        Line Input #1, sValue
        ' agregar nuevo valor
        ReDim Preserve pArrValues(lIndex)
        If sValue <> "" Then
            pArrValues(lIndex) = sValue
        End If
        lIndex = lIndex + 1
    Wend
 
    Close
End Sub
 
Private Sub Command1_Click()
    If Text1 <> "" Then
        ' guardar los valores del array en el archivo de historial
        Call saveValues(arrValues, Text1.Text)
        Text1.Text = ""
    End If
End Sub
 
Private Sub Form_Load()
    Text1 = ""
    Command1.Caption = "Añadir valor"
    ReDim arrValues(0)
 
    ' cargar los valores desde el archivo de texto en el array
    Call LoadValues(arrValues)
 
End Sub
 
Private Sub Text1_Change()
    Call AutoCompletar_TextBox(Text1, arrValues)
End Sub
 
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
    Select Case KeyCode
        Case vbKeyBack, vbKeyDelete
            Select Case Len(Text1.Text)
                Case Is <> 0
                    bKeyBack = True
            End Select
    End Select
End Sub


en este tengo un solo cuadro de texto llamado text1 y un boton para ir rellenando mi base de datos llamada historial.dat. les agradeceria cualquier observacion
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder