Ayuda con visual basic 6

#1
Que tal bakunos!
ahora soy yo el que necesita de su amable ayuda!

Estoy haciendo un programa para sacar el CURP, pero tengo problemas al extraer las letras del apellido paterno.

Tengo una caja de texto llamada apellido_paterno.

cuando un usuario teclea un apellido compuesto, por ejemplo: "DE LOS COBOS", se supone que me debe de extraer la letra "C"

primero extraje con la funcion mid:

app=mid(apellido_paterno.text, 1, 6)

el resultado seria "DE LOS"

ahora lo que hago es hacer una comparacion con un IF :

if app = "DE LOS" then
app2 = mid(apellido_paterno.text, 1, 8)
' es decir, para que me estraiga la literal "C" del apellido compuesto
end if



el problema es que no entra a mi IF y no se por que...:histerica:
alguien me puede orientar, por favor?
 

yisus

Bovino adicto
#2
en primera esta mal tu logica, y si usan otro apellido compuesto o normal? no te va a funcionar.

No te puedo ayudar con VB6 ya que tengo mucho que no lo toco.

Pero deberias de buscar la manera de localizar el numero de palabras que tiene el apellido, de ahi obtener la primera letra de la ultima palabra y con eso sera mas que suficiente.

podrias partir la cadena por cada espacio que encuentres y guardarlo en un arreglo, y el ultimo elemento sera la ultima palabra.

Recuerda eliminar los espacios al inicio y al final con funciones como "trim" (en php), para que no te de problemas

Por cierto nunca va aser de todo preciso el curp ya que la clave unica (ultimo digito) es por medio de algun algoritmo que tiene el gobierno

saludos.
 
#3
tu problema es est
app2 = mid(apellido_paterno.text, 1, 8)
estas tomando el caracter primero al 8
debe ser algo asi
app2 = mid(apellido_paterno.text, 7, 8)
o
app2 = mid(apellido_paterno.text,8, 8)
eso es todo la condicion esta bien
 
#4
no se si ya lo hayas resuelto o no, pero la cuestion esta primero en que no puedes utilizar mid, lo primero que tendrias que hacer es eliminar las palabras de los apellidos compuestos DE LA, DE LOS etc etc
 

omega96

Bovino Milenario
#5
bueno es muy sencillo tu problema te paso una solucion a tu problema:chommy:

Private Sub Form_Load()
'inicializamos las variables
Dim compuesto As String
Dim numero As Integer
Dim apellido As String
Dim letra As String

'inicializo con "de los cobos" por ejemplo puede ser cualquiera compuesto
compuesto = "DE LOS COBOS"
'verifico donde esta el primer "espacio" de adelante hacia atras
numero = InStrRev(compuesto, " ")
'extraigo la ultima palabra de la cadena
apellido = Right(compuesto, Len(compuesto) - numero)
'extraigo el primer caracter de la ultima palabra que extraje
letra = Mid(apellido, 1, 1)
'mestro los datos
MsgBox apellido
MsgBox letra
End Sub


espero sea de ayuda, cualquier cosa estoy a un privado de distancia.:vientos:
 
#6
bien, nada mas que ahi lo estas limitando a un solo apellido, y no estamos tomando en cuenta que COBOS si se toma en cuenta solo debes eliminar DE LA, DE LOS

algo asi:

dim sCompuestos () as string

sCompuestos=array("DE"," LOS "," LAS ", " LA ") 'agregas cuantos mas conozcas tu

for i=0 to ubound(scompuestos)
apepaterno=replace(apepaterno,scompuestos(i),"")
next i
 

omega96

Bovino Milenario
#7
bien, nada mas que ahi lo estas limitando a un solo apellido, y no estamos tomando en cuenta que COBOS si se toma en cuenta solo debes eliminar DE LA, DE LOS

algo asi:

dim sCompuestos () as string

sCompuestos=array("DE"," LOS "," LAS ", " LA ") 'agregas cuantos mas conozcas tu

for i=0 to ubound(scompuestos)
apepaterno=replace(apepaterno,scompuestos(i),"")
next i
de hecho no, puedes probar con cualquier apellido, compuesto o no, y te sacara la primera letra. esto para evitar lo que dices, DE"," LOS "," LAS ", " LA " eso no sirve para programar de manera dinamica.
 
#9
bien, nada mas que ahi lo estas limitando a un solo apellido, y no estamos tomando en cuenta que COBOS si se toma en cuenta solo debes eliminar DE LA, DE LOS

algo asi:

dim sCompuestos () as string

sCompuestos=array("DE"," LOS "," LAS ", " LA ") 'agregas cuantos mas conozcas tu

for i=0 to ubound(scompuestos)
apepaterno=replace(apepaterno,scompuestos(i),"")
next i
Ummm Nop... Imaginate cuantos nombres compuestos existen y cada vez que requieras agregar uno mas es recompilar la aplicacion. Aqui lo más sano es ubicar donde esta el ultimo espacio en blanco y hacerle el right como dicen por ahi.. Todo codigo debe de ser dinamico.

Saludos,
 
Arriba