Programación General > Visual Basic para principiantes
Utilizar Texto En Columnas De Excel
(1/1)
fakeswato:
que tal, tengo este problema
enlazo visual con extra!a system (un programa de emulacion 3270)
y obtengo el siguiente string "PEREZ CASTRO, JESUS R" sin las comillas claro, lo que necesito es invertir el orden de la variable, para obtener nombre y despues apellidos
"JESUS R PEREZ CASTRO" y sin la coma "," claro
esto se podria realizar con texto en columnas con excel, pero como podria obtener el mismo resultado en visual, se me ocurria utilizar dim pero no se bien como hacerlo
Nebire:
Puedes usar la instrucción split con un bucle. Split corta cadenas por determinados caracteres y cada trozo lo introduce en una matriz.
Te ilustro con un ejemplo como se usa:
--- Código: Text --- public function invertir_palabras(entrada as string) as string dim salida as string dim n() as string dim p() as string ' albergará las plabras que existan en la cadena de entrada, split redimensiona la matriz al tamaño preciso n=split(entrada, ",") ' divide la cadena en 2 subcadenas, se supone que siempre existe esa coma.... if instr(" ", n(1))<>0 then ' el nombre es compuesto p= split(n(1), " ") ' dividimos el nombre compuesto en tantos como haya salida= p(0) ' si lo metemos en el bucle se añadiría un espacio delante, auqneu siempre podríamos quitarlo con trim... for k= 1 to ubound(p) salida= salida & " " & p(k) next else Salida= n(1) end if salida= salida & " " & n(0) ' finalmente añadimos los apellidos invertir_palabras= salidaend function
fakeswato:
OK, no era precisamente lo que buscaba, pero me abrio la puerta al codigo que estaba buscando, GRACIAS :D
--- Código: Text ---cp$ = Sess0.Screen.GetString(8, 17, 5)nom = Split(Sess0.Screen.GetString(4, 1, 27), ",")apellido = Split(nom(0), " ") Sess0.Screen.PutString " ", 3, 6Sess0.Screen.PutString apellido(0), 3, 6Sess0.Screen.PutString " ", 3, 28Sess0.Screen.PutString apellido(1), 3, 28Sess0.Screen.PutString " ", 3, 52Sess0.Screen.PutString nombre(0), 3, 52Sess0.Screen.PutString " ", 3, 61Sess0.Screen.PutString nombre(1), 3, 62
bueno esto me genera otra inquietud, de la base de datos tengo otros nombres, que implica otros detalles, ejemplo:
DE ALBA HADDAD,FELICIANO
el apellido tiene tres palabras, para poder accesar a la informacion la tendria que ingresar de la siguiente manera
--- Citar ---PAT DE ALBA MAT HADDAD FIRST FELICIANO MIDL
--- Fin de la cita ---
2do punto
cuando el nombre contiene 2 nombre "luis gustavo" por ejemplo:
no hay problema con el codigo antes mencionado, pero cuando el nombre solo tiene uno "maria" me manda el error fuera de indice, ya que nombre(1) no se ha generado, cual seria la condicion para que el sistema detecte si se creo o no la variable nombre(1)
Navegación
Ir a la versión completa