Programar fonetica

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

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas