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

El puñetero access

Estas en el tema de El puñetero access en el foro de .NET en Foros del Web. soy yo otra vez, es que no me llevo bien con access jeje La cuestion es que intento modiificar un registro y ada, luego cuando ...
  #1 (permalink)  
Antiguo 04/09/2006, 06:47
 
Fecha de Ingreso: julio-2006
Mensajes: 79
Antigüedad: 18 años, 8 meses
Puntos: 0
El puñetero access

soy yo otra vez, es que no me llevo bien con access jeje
La cuestion es que intento modiificar un registro y ada, luego cuando lleno el grid de nuevo (asp.net 1.1) me recupera el registro que habia que tenido que actualizar, es decir, no va ni pa tras pero lo gracioso es que la misma consulta la pongo en la base de datos y me actualiza corrrectamente ¿que leches le pasa?

public static Peliculas ModificarRegistro(int id,string titulo,int video,int audio,int formato,bool valor, int discos,string comment,int genero)
{
Peliculas reg =null;
OleDbConnection cn;
OleDbCommand cmd ;
cmd=new OleDbCommand();
string cad=(System.Configuration.ConfigurationSettings.Ap pSettings.Get("CadenaConexion"));
string sql;
cn=new OleDbConnection(cad);

OleDbParameter paramid = new OleDbParameter(":id",OleDbType.Integer);
paramid.Value=id;
OleDbParameter param1 = new OleDbParameter(":titulo",OleDbType.VarChar,50 );
param1.Value=titulo;
OleDbParameter param2 = new OleDbParameter(":video",OleDbType.Integer);
param2.Value=video;
OleDbParameter param3 = new OleDbParameter(":audio",OleDbType.Integer);
param3.Value=audio;
OleDbParameter param4 = new OleDbParameter(":formato",OleDbType.Integer);
param4.Value=formato;
OleDbParameter param5 = new OleDbParameter(":referencia",OleDbType.Integer);
param5.Value=id;
OleDbParameter param6 = new OleDbParameter(":promo",OleDbType.Boolean);
param6.Value=valor;
OleDbParameter param7 = new OleDbParameter(":discos",OleDbType.Integer );
param7.Value=discos;
OleDbParameter param8 = new OleDbParameter(":comment",OleDbType.VarChar,200 );
param8.Value=comment;
OleDbParameter param9 = new OleDbParameter(":g",OleDbType.Integer );
param9.Value=genero;

cmd.Parameters.Add(param5);
cmd.Parameters.Add(param1);
cmd.Parameters.Add(param2);
cmd.Parameters.Add(param3);
cmd.Parameters.Add(param4);
cmd.Parameters.Add(param6);
cmd.Parameters.Add(paramid);
//añado los parametros a modificar en el primer update

//hago dos operaciones de update ya que sino el access se e pira la pinza dando error
//un primer update con algunos valores de la tabla y el segundo con otros

sql="update peliculas_comprimidas set titulo=:titulo ,video=:video,audio=:audio,formato=:formato,promoc ional=:valor where referencia=:id";
cmd.CommandText=sql;
cmd.Connection=cn;
cn.Open();
try
{
cmd.ExecuteNonQuery();
//"se supone" que hace la primera actualizacion
sql="update peliculas_comprimidas set discos=:discos,comentarios=:comment,genero=:g where referencia=:id";
cn.Close();
//creo la segunda consulta cerrando la conection
cmd.CommandText=sql;
cmd.Parameters.Add(param7);
cmd.Parameters.Add(param8);
cmd.Parameters.Add(param9);
cmd.Connection=cn;

cn.Open();
cmd.ExecuteNonQuery();
reg=new Peliculas(id);
//actualizo el objeto modificado y lo devuelvo actualizado

}
catch(Exception ex)
{
ExceptionManager.Publish(ex);
throw new Exception("Error" + ex.Message,ex);
}
return reg;
}
}
  #2 (permalink)  
Antiguo 05/09/2006, 13:00
Avatar de .seb  
Fecha de Ingreso: marzo-2006
Ubicación: Uruguay
Mensajes: 493
Antigüedad: 19 años
Puntos: 1
Cita:
Iniciado por Davideslapoya Ver Mensaje
cn.Open();
Por que abres dos veces la conexión?
__________________
saludos
seba
http://sgomez.blogspot.com
  #3 (permalink)  
Antiguo 06/09/2006, 00:52
 
Fecha de Ingreso: julio-2006
Mensajes: 79
Antigüedad: 18 años, 8 meses
Puntos: 0
porque cree dos sentencia update, una con pocos valores y otr con los restantes paraa haber si podia funcionar asi ya que poniendo el tocho del updatte no funcionaba
  #4 (permalink)  
Antiguo 06/09/2006, 04:15
Avatar de freegirl
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: Catalonia
Mensajes: 4.334
Antigüedad: 21 años, 5 meses
Puntos: 156
te tendría que funcionar el update aunque pongas 200 campos. Algo mal debe haber para que no te funcione.

Razones por la cual te puede "petar" alguna linea de código,pues que estés insertando un valor nulo en un campo que no le permita, que estés insertado un tipo de dato distinto al que es el campo. Revisa que todo esté correcto. Pon que te devuelva el error interno: ex.tostring

Otra cosa, yo es que veo que pones mucho código para hacer un update. Lo puedes simplificar un poco más, definiendo el tipo y añadiendolo en una misma línea:

Cita:
cmd.Parameters.Add(New OledBParameter("@codigo", OledDbType.Int)).Value = varCodigo


saludos
  #5 (permalink)  
Antiguo 07/09/2006, 06:49
 
Fecha de Ingreso: julio-2006
Mensajes: 79
Antigüedad: 18 años, 8 meses
Puntos: 0
Es que a mi la aplicacion no peta en ningun momento solo es que no actualiza
  #6 (permalink)  
Antiguo 07/09/2006, 07:26
Avatar de freegirl
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: Catalonia
Mensajes: 4.334
Antigüedad: 21 años, 5 meses
Puntos: 156
debugas el código y te hace línea por línea correctamente?
  #7 (permalink)  
Antiguo 08/09/2006, 05:33
 
Fecha de Ingreso: julio-2006
Mensajes: 79
Antigüedad: 18 años, 8 meses
Puntos: 0
si, ya te digo que los valores de C# los voy controlando(voy controlando las variables) y esos valores los pongo en access y aqui si que funciona pero en c# na de nada
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 17:04.