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

Comparar datos con otros de una BD en MySql

Estas en el tema de Comparar datos con otros de una BD en MySql en el foro de .NET en Foros del Web. Hola!!! Estoy haciendo un winform donde introduzco un numero en un textbox , lo multiplico por otro y el resultado de esta multiplicacion lo comparo ...
  #1 (permalink)  
Antiguo 17/07/2009, 10:09
 
Fecha de Ingreso: mayo-2009
Mensajes: 118
Antigüedad: 15 años
Puntos: 1
Comparar datos con otros de una BD en MySql

Hola!!!

Estoy haciendo un winform donde introduzco un numero en un textbox , lo multiplico por otro y el resultado de esta multiplicacion lo comparo con otro valor que hay en una BD. El problema esta en que no se como hacer para comparar el resultado de la multiplicacion y el de la BD. Mi codigo es este pero no se como seguir ....

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 textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
ClsUtil.SoloNumeros(textBox1, e);// con esto ya tendriamos la verificacion de solo numeros
}
string Resultado;
string RutaPrograma;
string Codigo;
private void button1_Click(object sender, EventArgs e)
{
Codigo = textBox1.Text.Trim();
conn.Open();//Abre la conexion

resultado=5*Codigo

A PARTIR DE AQUI NO SE SEGUIR!!!
}
  #2 (permalink)  
Antiguo 17/07/2009, 10:12
 
Fecha de Ingreso: junio-2009
Mensajes: 117
Antigüedad: 14 años, 10 meses
Puntos: 3
Respuesta: Comparar datos con otros de una BD en MySql

posteamos casi a la misma vez xD
disculpa en mi caso no manejo todabia bien BD
Saludo
  #3 (permalink)  
Antiguo 17/07/2009, 10: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: Comparar datos con otros de una BD en MySql

bueno

1ero tu consulta sql debe devolver un dato ejm: Select valor from tutabla

2do en la consulta que debes realizar hacer como cualquier otra consulta pero lo ejecutas como
.ExecuteScalar()
Ejm:
Código C#:
Ver original
  1. cmd = new SqlCommand();
  2. cmd.Connection = Con;
  3. cmd.CommandType = CommandType.StoredProcedure; // Si no es Procedure cambiar por CommandType.Text
  4. cmd.CommandText = "Sp_Valor"; // Si no es Stored cambiar por sentencia SQL
  5.  
  6. Object Valor = null;
  7. Valor = cmd.ExecuteScalar(); // devuelve el primer registro de la primera fila y la primera columna
  8.  
  9. // luego lo comparas con tu valor que tengas
  10.  
  11. if(resultado == Int.Parse(Valor) // aqui verificas y lo demas que quieras realizar
  12. {
  13. }
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #4 (permalink)  
Antiguo 17/07/2009, 11:42
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 21 años, 9 meses
Puntos: 15
Respuesta: Comparar datos con otros de una BD en MySql

Te dejo tambien este Artículo para que entiendas como es que se trabaja con bases de datos y cuales son las librerias necesarias para comenzar a trabajar bien.

http://www.dotnetpanama.com/dotnetpa...os-en-NET.aspx

Saludos,
  #5 (permalink)  
Antiguo 20/07/2009, 03:04
 
Fecha de Ingreso: mayo-2009
Mensajes: 118
Antigüedad: 15 años
Puntos: 1
Respuesta: Comparar datos con otros de una BD en MySql

Ok, he ido siguiendo las sugerencias que me decis y tengo el siguiente codigo aunque me genera errores. Ademas tengo las siguientes dudas

1) Como podria hacer en la instruccion IF {} si "resultado >= valor" la variable "resultado" se escribiera en la BD sustituyendo a "valor" en su casilla correspondiente?

2) Si "resultado>= valor" ¿ Habría alguna forma que en un datagrid saliera en una columna el nombre asiciado a valor y al lado en otra columna un OK?



namespace Lanzar_O.F
{

//Aqui tengo la clase Clsutil y debajo el codigo para que los textbox acepten nuemros//

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);
}

int resultado;
int unidades;
string RutaPrograma;
string Codigo;

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
ClsUtil.SoloNumeros(textBox1, e);
}

private void textBox2_KeyPress(object sender, KeyPressEventArgs e)
{
ClsUtil.SoloNumeros(textBox2, e);
}

private void button1_Click(object sender, EventArgs e)
{
cmd = new MySqlCommand();
cmd.Connection = conn;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "Sp_Valor";

unidades = textBox1.Text.Trim();
conn.Open();
Object Valor = null;
Valor = cmd.ExecuteScalar();
resultado = 5 * unidades;
if(resultado == Int.Parse(Valor))
{

}

}


}
}
  #6 (permalink)  
Antiguo 20/07/2009, 07:50
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: Comparar datos con otros de una BD en MySql

1ero has creado el procedimiento Sp_Valor para que te devuelva el valor
si quieres que actualizar el valor debes realizar simplemente un Update a dicha columna del registro que quieres actualizar Ejm: "Update NomTabla Set NomCapo = resultado;" lo recomendable seria que crees un procedimiento almacenado y lo llames en tu aplicacion.

aqui unos link para saber mas sobre stored produre

http://www.elguille.info/NET/ADONET/...cuteScalar.htm

http://www.elguille.info/NET/ADONET/...almacenado.htm

2do para que desearias mostrar el resultado en una grilla solo bastaria decirle que el dato ha sido ya insertado o mostrarlo en un label como insercion satisfactoria
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #7 (permalink)  
Antiguo 20/07/2009, 10:14
 
Fecha de Ingreso: mayo-2009
Mensajes: 118
Antigüedad: 15 años
Puntos: 1
Respuesta: Comparar datos con otros de una BD en MySql

Pero podriais decirme si el ultimo codigo que escribi esta bien?¿ Es que aun me cuesta esto de C# y he leido los ejemplos de Dradi7 y no me entero mucho...disculpar...
  #8 (permalink)  
Antiguo 20/07/2009, 10:49
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: Comparar datos con otros de una BD en MySql

pero el codigo esta bien el problema es que no has creado el procedimiento almacenado que puse Sp_Valor ademas el codigo que puse era como referencia y no era necesario que lo copies = o no podrias usar tanto el procedimiento almacenado como una consulta sql

si en caso tienes otros problemas porque no escribes el error que te manda
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #9 (permalink)  
Antiguo 21/07/2009, 03:30
 
Fecha de Ingreso: mayo-2009
Mensajes: 118
Antigüedad: 15 años
Puntos: 1
Respuesta: Comparar datos con otros de una BD en MySql

He leido lo del procedimiento almacenado y no lo entiendo es mas no se como hacerlo....Podrias Dradi7 decirme tu como se hace?¿ Gracias!
  #10 (permalink)  
Antiguo 21/07/2009, 04:39
 
Fecha de Ingreso: mayo-2009
Mensajes: 118
Antigüedad: 15 años
Puntos: 1
Respuesta: Comparar datos con otros de una BD en MySql

Ah por cierto del programa que hice ayer me da estos errores:

1) Error 3 No se puede convertir implícitamente el tipo 'string' en 'int'

2) Error 4 El nombre 'Int' no existe en el contexto actual
  #11 (permalink)  
Antiguo 21/07/2009, 13:06
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: Comparar datos con otros de una BD en MySql

para evitarte problemas realizalo como una consulta normal

Código C#:
Ver original
  1. cmd = new SqlCommand();
  2. cmd.Connection = Con;
  3. cmd.CommandType = CommandType.Text;
  4. cmd.CommandText = "select tucampo from tutabla";
  5.  
  6. Object Valor = null;
  7. Valor = cmd.ExecuteScalar(); // devuelve el primer registro de la primera fila y la primera columna
  8.  
  9. // luego lo comparas con tu valor que tengas
  10.  
  11. if(resultado == int.Parse(Valor.ToString()) // aqui verificas y lo demas que quieras realizar
  12. {
  13. }

Ahora los errores que me comentas:

Ahi tuve un pequeño error la conversion seria asi
Código C#:
Ver original
  1. int.Parse(Valor.ToString())
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #12 (permalink)  
Antiguo 22/07/2009, 04:53
 
Fecha de Ingreso: mayo-2009
Mensajes: 118
Antigüedad: 15 años
Puntos: 1
Respuesta: Comparar datos con otros de una BD en MySql

Bien, lo errores que comentaba ayer estan solucionados pero aun tengo mas dudas

1) En esta parte de codigo lo que quiero es que yo introduzco un numero en el textbox2 que es el nombre de la tabla donde quiero buscar para que despues pasarsela a la instruccion de MySql "select unds from "'+Codigo+'"" pero esta sentencia esta mal.

private void button1_Click(object sender, EventArgs e)
{

unds = textBox1.Text.Trim();
Codigo = textBox2.Text.Trim();
cmd = new MySqlCommand();
cmd.Connection = conn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = "select unds from "'+Codigo+'"";

conn.Open();

Object Valor = null;
Valor = cmd.ExecuteScalar();
resultado=5*unds;

if(resultado == int.Parse(Valor.ToString()))

{

}

}

2) Esta instruccion es correcta => if(resultado >= int.Parse(Valor.ToString()))


3) Si la sentencia IF no se cumple como puedo poner en un grid el nombre del registro que no cumple en una celda y en otra escribir "ERROR"?
  #13 (permalink)  
Antiguo 22/07/2009, 07:51
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: Comparar datos con otros de una BD en MySql

Oh Por Dios
mira el error que estas cometiendo en tu consulta tu pones esto

"select unds from "'+Codigo+'"";

deberia ser por esto

"select unds from nomtabla where codigo = "'+Codigo+'"";

como dije antes porque tratas de copiar el codigo tal como esta es solo un ejemplo que tu debes aplicar y cambiar
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #14 (permalink)  
Antiguo 22/07/2009, 09:16
 
Fecha de Ingreso: mayo-2009
Mensajes: 118
Antigüedad: 15 años
Puntos: 1
Respuesta: Comparar datos con otros de una BD en MySql

No lo copio igual sino que pongo un ejemplo como el anterior para ,segun mi opinion, dejar claro cual es mi error. Siento si soy muy desesperante
  #15 (permalink)  
Antiguo 22/07/2009, 09:21
 
Fecha de Ingreso: mayo-2009
Mensajes: 118
Antigüedad: 15 años
Puntos: 1
Respuesta: Comparar datos con otros de una BD en MySql

Antes de nada gracias por tu paciencia Dradi7.

Esta instruccion es correcta?¿ if(resultado >= int.Parse(Valor.ToString()))

Me da este error tb al compilar Error 2 No se puede convertir el grupo de métodos 'Trim' en tipo no delegado 'string'. ¿Intentó invocar el método?
  #16 (permalink)  
Antiguo 22/07/2009, 09:44
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: Comparar datos con otros de una BD en MySql

primero debes validar que lo que te devuelve Valor tenga algun dato porque si te devuelve "" no podras parsear y generaras error entonces has lo siguiente
if(Valor.ToString().Trim() != "")
{
if(resultado >= int.Parse(Valor.ToString().Trim()))
}
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #17 (permalink)  
Antiguo 23/07/2009, 02:18
 
Fecha de Ingreso: mayo-2009
Mensajes: 118
Antigüedad: 15 años
Puntos: 1
Respuesta: Comparar datos con otros de una BD en MySql

La sentencia de MySql que me dijiste ayer no me referia a esto

"select unds from nomtabla where codigo = '+codigo+'";

Sino que lo que escribo en el textbox es el nombre de la tabla que es un conjunto de numeros. Es decir que en vez de el nombre de la tabla nomtabla debe ir el conjunto de numeros que recojo en el textbox.Que es lo que no se escribir.

Una duda con la sentencia de MySql lo que hago es primero abrir la tabla que quiero y despues selecciono el campo "unds" que es donde recojo el primer valor de la tabla y lo asigno a valor. Es correcto lo que digo?¿ Gracias!!
  #18 (permalink)  
Antiguo 23/07/2009, 08: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: Comparar datos con otros de una BD en MySql

bueno si es asi entonces debes remplazar el nomtabla por la variable codigo

si puedes abrir la tabla como dices y obtener el primer valor de la primera columna y fila usando el ExecuteScalar() pero si deseas obtener el valor de otra celda tendrias que pasarle entonces a tu sentencia una condicional
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #19 (permalink)  
Antiguo 23/07/2009, 09:49
 
Fecha de Ingreso: mayo-2009
Mensajes: 118
Antigüedad: 15 años
Puntos: 1
Respuesta: Comparar datos con otros de una BD en MySql

Entoces la sentencia MySql podria ser asi =>
"select unds from codigo = '+codigo+'"; o asi => "select unds from codigo'"'?¿
  #20 (permalink)  
Antiguo 23/07/2009, 10:48
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: Comparar datos con otros de una BD en MySql

seria asi
"select unds from '+codigo+'";
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #21 (permalink)  
Antiguo 23/07/2009, 11:41
 
Fecha de Ingreso: mayo-2009
Mensajes: 118
Antigüedad: 15 años
Puntos: 1
Respuesta: Comparar datos con otros de una BD en MySql

Ok, y una cosa sobre el IF. Tengo esto en la base de datos

producto unds
101 30
102 40

Y el Execute.Scalar() escribiria 30 en la variable "Valor" y despues otras instrucciones la compararian con "Resultado",no?¿ Pero si no cumple la condicion del IF como haria para que en un grid aparezca el productoen una celda y en otra al lado la frase "NO DISPONIBLE"?¿
  #22 (permalink)  
Antiguo 23/07/2009, 17:57
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: Comparar datos con otros de una BD en MySql

pero porque no mejor utilizas en un label para que mostrarlo en una grilla solo dos datos
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #23 (permalink)  
Antiguo 27/07/2009, 02:23
 
Fecha de Ingreso: mayo-2009
Mensajes: 118
Antigüedad: 15 años
Puntos: 1
Respuesta: Comparar datos con otros de una BD en MySql

Si , tienes razon Dradi7 en el grid voy a mostrar solo el nombre del campo que no cumpla la sentencia IF. Para ello me valdria este codigo?¿


private void button1_Click(object sender, EventArgs e)
{
Codigo = textBox2.Text.Trim();
cmd = new MySqlCommand();
cmd.Connection = conn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = "select unds from '+codigo+'";
adaptador.Fill(tabla);
bdl.Tables.Add(tabla);

conn.Open();
resultado=5*unds;
Object Valor = null;
Valor = cmd.ExecuteScalar();

if(Valor.ToString().Trim() != "")
{
if (resultado >= int.Parse(Valor.ToString().Trim()))
{


else
{

adaptador.Fill(tabla);
bdl.Tables.Add(tabla);

}

dataGridView1.DataSource = bdl.Tables['+codigo+'];
dataGridView1.Update();
conn.Close();


}


}

}
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 09:47.