Visual Basic Foro
Programación => Visual Basic .NET / C# => Mensaje iniciado por: softmania en Noviembre 10, 2013, 11:47:24 pm
-
Hola a todos ...
Aquí les dejo como hacer un split con varios separadores
Dim sCadena As String
Dim sResultado As String = ""
Dim sSplit() As String
'cargamos una cadena de nombres y variamos los separadores
sCadena = "pablo;juan;pedro|marcos;miguel|jorge"
'en el split especificamos que carateres serán utilizados como separador
'en este caso ";" y "|"
sSplit = sCadena.Split(New [Char]() {";", "|"})
'y mostramos el resultado
For Each sResulFor As String In sSplit
sResultado = sResultado + sResulFor + vbNewLine
Next
MsgBox(sResultado)
No es algo muy común de utilizar, pero en algún momento pueden necesitarlo ...
salu2 a todos
-
Pues si un Split tiene la función de separar los parámetros de una cadena para agregarlos a una matrix, y a lo contrario que tu dices es mucho más util de lo que crees, este es un ejemplo:
Imports MySql.Data.MySqlClient
Public Class Consultar
Public Opcion As String = ""
Public Tabla As String
Public Campo As String
Public Campos() As String
Public Tipo As String
Public Valor As String
Public Cadena As String
Public BEmpresa As Boolean
Public BAdicional As Boolean
Public Limites As Boolean = False
Public LimiteA As Integer
Public Limiteb As Integer
Public BTTexto As Boolean = False
Public BTodo As Boolean = False
Public Adicional As String
Public CONCATE As Boolean
Dim Conex As New DataBase
Dim CMConsulta As New MySqlCommand
Public RDConsulta As MySqlDataReader
Public DSConsulta As DataSet
Public BSConsulta As BindingSource
Public DAConsulta As MySqlDataAdapter
Public Function vString() As String
Dim Sql As String
Dim vTipo As String
Dim vCampo As String
Dim Variables() As String = Split(Valor, " ")
Dim vVariables As String
Dim Concatenador As String = "AND"
If CONCATE Then Concatenador = "OR"
Sql = ""
vTipo = ""
vCampo = ""
vVariables = ""
If Opcion = "" Then
Select Case Tipo
Case "IGUAL" : vTipo = "="
Case "DIFERENTE" : vTipo = "<>"
Case "CONTENGA" : vTipo = "LIKE"
End Select
For n As Integer = 0 To UBound(Campos)
If n <> 0 Then
vCampo += ", "
End If
vCampo += Campos(n)
Next
Sql = "SELECT " & vCampo & " FROM " & Tabla & " WHERE " & Campo & " "
If BTodo = False Then
For m As Integer = 0 To UBound(Variables)
If m <> 0 Then
Sql += " " & Concatenador & " " & Campo & " "
End If
Sql += vTipo & " "
If IsNumeric(Variables(m)) And BTTexto = False Then
Sql += Variables(m)
Else
If Tipo = "CONTENGA" Then Sql += "'%" & Variables(m) & "%'"
If Tipo = "IGUAL" Or Tipo = "DIFERENTE" Then Sql += "'" & Variables(m) & "'"
End If
Next
ElseIf BTodo = True Then
Sql += vTipo & " "
Dim Todo As String = Nothing
For m As Integer = 0 To UBound(Variables)
If m <> 0 Then
Todo += " "
End If
Todo += Variables(m)
Next
If IsNumeric(Todo) Then
Sql += Todo
Else
If Tipo = "CONTENGA" Then Sql += "'%" & Todo & "%'"
If Tipo = "IGUAL" Or Tipo = "DIFERENTE" Then Sql += "'" & Todo & "'"
End If
End If
Select Case BEmpresa
Case True : Sql += " AND Id_Empresa = " & IdEmpresa
End Select
Select Case BAdicional
Case True : Sql += " AND " & Adicional
End Select
Select Case Limites
Case True
Sql += " LIMIT " & LimiteA & ", " & Limiteb
End Select
ElseIf Opcion = "Tabla" Then
For n As Integer = 0 To UBound(Campos)
If n <> 0 Then
vCampo += ", "
End If
vCampo += Campos(n)
Next
Select Case BEmpresa
Case True : Sql = "SELECT " & vCampo & " FROM " & Tabla & " WHERE Id_Empresa = " & IdEmpresa
Case False : Sql = "SELECT " & vCampo & " FROM " & Tabla
End Select
Select Case BAdicional
Case True
Select Case BEmpresa
Case True : Sql += " AND " & Adicional
Case False : Sql += " WHERE " & Adicional
End Select
End Select
Select Case Limites
Case True
Sql += " LIMIT " & LimiteA & ", " & Limiteb
End Select
End If
Return Sql
End Function
Public Sub Cargar()
Try
Conex.vConectar()
CMConsulta.Connection = Conex.vConecxion
CMConsulta.CommandType = CommandType.Text
CMConsulta.CommandText = vString()
RDConsulta = CMConsulta.ExecuteReader
Debug.Print("Consulta Cargada Exitosamente")
Catch ex As MySqlException
Debug.Print("Exepción de MySQL: " & ex.Message)
End Try
End Sub
Public Sub Carga2()
Conex.vConectar()
DSConsulta = New DataSet
DAConsulta = New MySqlDataAdapter(vString, Conex.vConecxion)
DSConsulta.Tables.Add(Tabla)
DAConsulta.Fill(DSConsulta.Tables(Tabla))
Debug.Print(DSConsulta.Tables.ToString)
BSConsulta.DataSource = DSConsulta
BSConsulta.DataMember = Tabla
End Sub
Public Sub Cargar3()
Conex.vConectar()
CMConsulta.Connection = Conex.vConecxion
CMConsulta.CommandType = CommandType.Text
CMConsulta.CommandText = Cadena
RDConsulta = CMConsulta.ExecuteReader
End Sub
Public Sub Descargar()
RDConsulta.Close()
RDConsulta = Nothing
Conex.vDesconectar()
CMConsulta.Dispose()
End Sub
Public Sub Descarga2()
DAConsulta.Dispose()
DSConsulta.Dispose()
Conex.vDesconectar()
End Sub
End Class
-
Hola colega NDWgt ... en el ejemplo que pusiste veo que tienes un split y con un solo separador, el espacio ... es por eso que explico que no es tan común usar un split con varios separadores, la idea era mostrar como se puede extender un split con mas de un separador. En muchos lenguajes hay que hacer una gran función para poder obtener los resultados que se obtiene en una simple línea de vb.net, a pesar de que en esos lenguajes también exista dicha función o su equivalente.
-
Muy bien, si agregar al generador de la consulta un split con varios separadores!!!!! que fue lo que hize despues de ver tu código y agarre el incorrecto, queda una muy buena consulta de mysql o sql.