Foros del Web » Programación para mayores de 30 ;) » .NET »

Duda en instruccion en MySql

Estas en el tema de Duda en instruccion en MySql en el foro de .NET en Foros del Web. Hola!! ¿Existe alguna instruccion en MySql que me permita seleccionar series de numeros por sus cuatro primeros números (los subrayados)? P.ej : 0000 00000000 Seria ...
  #1 (permalink)  
Antiguo 08/06/2009, 02:49
 
Fecha de Ingreso: mayo-2009
Mensajes: 118
Antigüedad: 14 años, 11 meses
Puntos: 1
Duda en instruccion en MySql

Hola!! ¿Existe alguna instruccion en MySql que me permita seleccionar series de numeros por sus cuatro primeros números (los subrayados)? P.ej : 000000000000 Seria seleccionarlos para sacarlos a un datagrid view
  #2 (permalink)  
Antiguo 08/06/2009, 06:07
 
Fecha de Ingreso: junio-2009
Mensajes: 19
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Duda en instruccion en MySql

Buenas creo que esto te ayudara:

SUBSTRING( Nombre del campo ,Donde quieres que empiece (en tu caso 1, y cuntos caracteres quiere que coja (en tu caso 4))

La seelect quedaria asi:

SELECT Substring(Numeros,1,4) FROM Numeros, el problema que tienes que verificar que ese campo no permita nulos, asi que añadiria a la consulta esto:

SELECT IFNULL(Substring(Numeros,1,4),'') FROM Numeros

Saludos
  #3 (permalink)  
Antiguo 08/06/2009, 10:20
 
Fecha de Ingreso: mayo-2009
Mensajes: 118
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Duda en instruccion en MySql

cmd.CommandText = "SELECT IFNULL(Substring(tagId,1,4),'') FROM tagId"

Eso es lo que he puesto pero no funciona. No debería poner el nombre de la tabla en algun sitio donde está el campo tagId? .
  #4 (permalink)  
Antiguo 08/06/2009, 10:26
 
Fecha de Ingreso: mayo-2009
Mensajes: 118
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Duda en instruccion en MySql

"SELECT tagId IFNULL(Substring(eventrecord,1,4),'') FROM eventrecord" Esta sentencia la he probado pero no me funciona. Seria tagId el campo y eventrecord la tabla.
  #5 (permalink)  
Antiguo 08/06/2009, 16:00
Avatar de gedarufi  
Fecha de Ingreso: diciembre-2008
Ubicación: Colombia
Mensajes: 540
Antigüedad: 15 años, 4 meses
Puntos: 22
Respuesta: Duda en instruccion en MySql

Lo que te quiere decir Buceador23
Código:
cmd.CommandText = "SELECT IFNULL(Substring(Nombre campo,1,4),'') FROM Nombre tabla"
.
Espero que te sirva de algo
  #6 (permalink)  
Antiguo 09/06/2009, 01:58
 
Fecha de Ingreso: junio-2009
Mensajes: 19
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Duda en instruccion en MySql

Buenos dias, esto te tiene que funcionar perfectamente, yo estoy verificando y me realiza bien la consulta, tengo puesto lo siguiente:

SELECT IFNULL(SubString(NombreTabla.CampoAMostrar,1,4),'' ) FROM NombreTabla

Es lo mismo que ha puesto el compañero Gedarufi y te aseguro que lo hace bien, si te da error, compila el proyecto y debugealo, asi veras donde te da el error.

Un saludo
  #7 (permalink)  
Antiguo 09/06/2009, 02:43
 
Fecha de Ingreso: mayo-2009
Mensajes: 118
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Duda en instruccion en MySql

Muchas gracias ! Si, el error era mio pq ponia mal los datos de campo y tabla...

Una cosa y si yo por ejemplo tengo en una variable un valor y lo quisiera comparar con los 4 primeros digitos de los valores de una tabla, la instruccion MySql sería algo parecido , no? Por ejemplo

"SELECT IFNULL(Substring(eventrecord.tagId,1,4),'') FROM eventrecord WHERE (variable=' NO SE QUE PONER AQUI ')"
  #8 (permalink)  
Antiguo 09/06/2009, 03:06
 
Fecha de Ingreso: junio-2009
Mensajes: 19
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Duda en instruccion en MySql

Buenas de nuevo, este seria el codigo:

Dim Variable as integer = 0

SELECT CASE WHEN IFNULL(Substring(eventrecord.tagId,1,4),'')=" & variable & " THEN IFNULL(Substring(eventrecord.tagId,1,4),'') ELSE '0000' END FROM eventrecord


Si no te sirve dimelo y mira a ver que he puesto mal.
  #9 (permalink)  
Antiguo 09/06/2009, 08:11
 
Fecha de Ingreso: mayo-2009
Mensajes: 118
Antigüedad: 14 años, 11 meses
Puntos: 1
Duda en instruccion en MySql

Esta intruccion seria en visual basic ,no? Es que mi programa es en C#. Podria ser asi ?

int Variable;

SELECT CASE WHEN IFNULL(Substring(eventrecord.tagId,1,4),'')=" +variable + " THEN IFNULL(Substring(eventrecord.tagId,1,4),'') ELSE '0000' END FROM eventrecord;
  #10 (permalink)  
Antiguo 09/06/2009, 08:25
 
Fecha de Ingreso: junio-2009
Mensajes: 19
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Duda en instruccion en MySql

Si perfecto, solo recuerda dejar espacio entre las " y el THEN ya que es MySQL te daria un error.

Suerte, ya me contaras
  #11 (permalink)  
Antiguo 09/06/2009, 11:24
 
Fecha de Ingreso: mayo-2009
Mensajes: 118
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Duda en instruccion en MySql

Hola Buceador23!! Muchas gracias por tu ayuda! Te explico tengo un textbox donde introduzco cuatro numeros que se pasan a una variable Codigo hasta ahi bien. Pero despues quiero que con una sentencia Mysql me represente el nombre de los lectores (Nombre del lector) , en un gridview , que estan asociados a las series de numeros (TagId) que empiezan por los 4 digitos que escribi en el textbox.

TagId ----------------------->Nombre del lector
TagId ----------------------->Nombre del lector
TagId ----------------------->Nombre del lector

El codigo de mi programa sería este:


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
using MySql.Data;

namespace Consulta3
{
class ClsUtil {

public static void SoloNumeros(object sender, KeyPressEventArgs e)
{

if ((e.KeyChar >= 48) && (e.KeyChar <= 57))
e.Handled = false;
//Acepta Borrador y Enter
else if ((e.KeyChar == 8) || (e.KeyChar == 13))
e.Handled = false;
else
{
e.Handled = true;
}

}



}

public partial class Form1 : Form
{

private DataSet bdl;//DataSet de datos
private DataTable tabla;//Tabla que almacena datos
private MySqlDataAdapter adaptador;//Objeto que sirve para comunicar al dataset con el DBMS
private MySqlConnection conn;//Objeto que realiza la conexion con el DBMS
private MySqlCommand cmd;//Objeto para la ejecucion de sentencias SQ



public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
bdl = new DataSet("singularity");
tabla = new DataTable("eventrecord");
conn = new MySqlConnection("Database=singularity;Data Source=localhost;User Id=root;Password=825200");
cmd = new MySqlCommand("Sentencia SQL", conn);
adaptador = new MySqlDataAdapter(cmd);
}


private void textBox_KeyPress(object sender, KeyPressEventArgs e)
{
ClsUtil.SoloNumeros(textBox, e);// con esto ya tendriamos la verificacion de solo numeros
}



string Codigo;
private void button1_Click(object sender, EventArgs e)
{
Codigo = textBox.Text.Trim();
conn.Open();//Abre la conexion
if (bdl.Tables.Count == 0)
{

cmd.CommandText = " SELECT IFNULL(Substring(eventrecord.tagId,1,4),'') WHERE tagId='" + Codigo + "' ";
adaptador.Fill(tabla);
bdl.Tables.Add(tabla);

}

else
{

bdl.AcceptChanges();
adaptador.Update(bdl, "eventrecord");

}

dataGridView1.DataSource = bdl.Tables["eventrecord"];
dataGridView1.Update();
conn.Close();//Cierra la conexion


}

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{

try
{
bdl = new DataSet("singularity");
tabla = new DataTable("eventrecord");
conn = new MySqlConnection("Database=singularity;Data Source=localhost;User Id=root;Password=825200");
cmd = new MySqlCommand("Sentencia SQL", conn);
adaptador = new MySqlDataAdapter(cmd);
}

catch (MySqlException ex)
{
MessageBox.Show(ex.Message, "Error al intentar conectarse", MessageBoxButtons.OK, MessageBoxIcon.Error);
}

}


}
}


Logicamente habria que cambiar la sentencia de MySql pero es ahi donde tengo la duda. A ver si me puedes ayudar .
  #12 (permalink)  
Antiguo 09/06/2009, 11:53
Avatar de Dradi7  
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 15 años, 10 meses
Puntos: 220
Respuesta: Duda en instruccion en MySql

porque no pruebas con la sentencia like es mas facil de implementar y te busca de acuerdo a los caracteres que ingreses

Ejm:

Select * From tuTabla Where Code like '0000%'

lo que realiza esta consulta es buscar todos los registrosque tengan los 4 primeros digitos 0000 en el codigo es decir si tengo 00001 00005 00004 00003 00014 me listaria solo los 4 primeros
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #13 (permalink)  
Antiguo 10/06/2009, 02:55
 
Fecha de Ingreso: mayo-2009
Mensajes: 118
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Duda en instruccion en MySql

Hola Dradi7 !!! Esta instruccion seria posible mejorada pq creo que le falta algo,seria posible?

" SELECT readerid FROM eventrecord WHERE tagid like '+ Codigo +' ";

Porque lo que quiero seria introducir un numero en el textbox (Codigo) y despues que el programa busque todos los codigos que empiecen por las 4 primeras cifras que yo introduje en el textbox.
  #14 (permalink)  
Antiguo 10/06/2009, 07:56
Avatar de Dradi7  
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 15 años, 10 meses
Puntos: 220
Respuesta: Duda en instruccion en MySql

pero en vez seria esta sentencia

Código C#:
Ver original
  1. " SELECT readerid FROM eventrecord WHERE tagid like '"+ Codigo +"%'"";
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #15 (permalink)  
Antiguo 10/06/2009, 08:46
 
Fecha de Ingreso: mayo-2009
Mensajes: 118
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Duda en instruccion en MySql

Perfecto, pero si vuelvo a escribir otro numero no me actualiza la grilla...Habria que utilizar un update o algo asi?
  #16 (permalink)  
Antiguo 10/06/2009, 08:54
Avatar de Dradi7  
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 15 años, 10 meses
Puntos: 220
Respuesta: Duda en instruccion en MySql

en que lo estas probando en un textbox con un boton o solamente en el textbox quieres que al escribir haga el cambio???
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #17 (permalink)  
Antiguo 10/06/2009, 09:07
 
Fecha de Ingreso: mayo-2009
Mensajes: 118
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Duda en instruccion en MySql

Lo estoy probando con un textbox y un boton y quiero que haga el cambio al escribir el numero en el textbox y pulsar de nuevo el boton
  #18 (permalink)  
Antiguo 10/06/2009, 09:16
Avatar de Dradi7  
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 15 años, 10 meses
Puntos: 220
Respuesta: Duda en instruccion en MySql

en ese caso ya no puedes utilizar el AcceptChanges ni el Update deberias realizar otra ves la consulta o utilizar un DataView
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #19 (permalink)  
Antiguo 10/06/2009, 09:18
 
Fecha de Ingreso: mayo-2009
Mensajes: 118
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Duda en instruccion en MySql

Para realizar de nuevo la consulta deberia cerrar la ventana y volver a abrirla? Y como seria con un dataview?
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:58.