Necesito saber si usted ha programado algo asi, como la fonetica de una palabra, por ejemplo quiero saber como implementar para una operadora de una telefonica, si por ejemplo a ella le preguntan, quiero saber el numero de telefono del señor ribera; y yo en mi programa tenga una busqueda por nombres, le de en el boton buscar y me aparezcan todos los riberas tanto con B grande como con V chica:
Por ejemplo Ribera coca Juan Carlos Rivera soliz octavio... Y asi sucesivamente... Lo que quiero ke me aparezca en el listado son los riberas con las distintas letras "b" o "v", pero esto es solo un ejemplo, yo quiero ke esto me funcione tanto para todos los casos en que la pronunciacion sea igual, pero la escritura distinta.
Respuesta de noetxugf
1
1
noetxugf, Hombre, experta, experta no soy, pero se me da bien el SQL,...
No sé si le he entendido muy bien. Mire, yo le envío un ejemplo en el que, a medida que se vayan introduciendo caracteres en una caja de texto va apareciendo en el listado lo que coincida con los caracteres que se van introduciendo: Private Sub nombre_Change() Dim cadena As String cadena = Trim$(nombre) If cadena = "" Then Call CambiarConsulta(rs, "SELECT * FROM GRUPO") Call vertabla(tabla, rs) Call verdatos Else Call CambiarConsulta(rs, "SELECT * FROM GRUPO WHERE NombreGrupo like '" & cadena & "%'") Call vertabla(tabla, rs) If rs.EOF Then 'no está sw = False Else 'está sw = True End If Call comprobar End If End Sub ¿Te envío un modulo con el que trabajo para que funcione la función de arriba ok? Ah, y tabla es un datagrid donde muestro el listado. Y nombre es la caja de texto. MODULO Option Explicit Private cn As ADODB.Connection Public Function Directorio(NombreFichero As String) As String Dim dir As String dir = App.Path If Right$(dir, 1) = "\" Then dir = dir & NombreFichero Else dir = dir & "\" & NombreFichero End If Directorio = dir End Function Public Sub Conectar(fbase As String) Set cn = New ADODB.Connection With cn .ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & Directorio(fbase) & ";" & "Persist Security Info=false" .Open End With End Sub Public Function Crear(ssource As String) As ADODB.Recordset Dim nuevo As ADODB.Recordset Set nuevo = New ADODB.Recordset With nuevo Set .ActiveConnection = cn .CursorType = adOpenStatic .CursorLocation = adUseClient .LockType = adLockOptimistic .Source = ssource .Open End With Set Crear = nuevo End Function Public Sub cerrar(rcierra As ADODB.Recordset) If rcierra Is Nothing Then Exit Sub If rcierra.State = adStateOpen Then rcierra.Close End If Set rcierra = Nothing End Sub Public Sub cerrarconexion() If cn Is Nothing Then Exit Sub If cn.State = adStateOpen Then cn.Close End If Set cn = Nothing End Sub Public Sub actualizar(rtabla As ADODB.Recordset) If rtabla Is Nothing Then Exit Sub With rtabla If .State = adStateOpen Then .Close End If .Open End With End Sub Public Sub vertabla(tabla As DataGrid, rsdatos As ADODB.Recordset) If tabla Is Nothing Or rsdatos Is Nothing Then Exit Sub With tabla tabla.Refresh If Vacio(rsdatos) Then .Enabled = False .BackColor = vbMenuBar Else .Enabled = True .BackColor = vbWindowBackground End If Set tabla.DataSource = rsdatos End With End Sub Public Sub HayErrores(rerror As ADODB.Recordset) Dim s As String, hayerror As ADODB.Error rerror.CancelUpdate s = "" For Each hayerror In cn.Errors s = s & "[" & Hex(hayerror.Number) & "\" & Hex(hayerror.NativeError) & "]" & vbCrLf & hayerror.Description & vbCrLf Next MsgBox s, vbExclamation + vbOKOnly End Sub Public Sub CambiarConsulta(rcons As ADODB.Recordset, ssource As String) If rcons Is Nothing Then Exit Sub If rcons.State = adStateOpen Then rcons.Close End If rcons.Source = ssource rcons.Open End Sub Public Function Vacio(rsvacio As ADODB.Recordset) As Boolean If rsvacio Is Nothing Then Vacio = False If rsvacio.State = adStateClosed Then Vacio = False If rsvacio.EOF And rsvacio.BOF Then Vacio = True Else Vacio = False End If End Function Public Sub Ejecutar(comando As String) Dim cm As New ADODB.Command With cm .ActiveConnection = cn .CommandText = comando .CommandType = adCmdText .Execute End With Set cm = Nothing End Sub Public Sub todo(rs As ADODB.Recordset, tabla As DataGrid, nombre As String) Call CambiarConsulta(rs, "SELECT * FROM " & nombre) Call vertabla(tabla, rs) End Sub Public Sub activar(boton As CommandButton) boton.Enabled = True End Sub Public Sub desactivar(boton As CommandButton) boton.Enabled = False End Sub Puede que no se use todo el módulo, pero así seguro que no falla, jejejeje. Bueno, ¿si no te gusta de esta manera me lo dices y miramos otro modo de hacerlo ok? Y si te gusta, pues puntúame, jejeje. Suerte y hasta pronto.