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
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
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


0