Buen día gente de ba-k. El motivo de crear este tema es debido a que ya llevo varios dias con unos problemas que no he podido resolver con un programa en C# que va a ser utilizado como punto de almacén, ya busque por varios lados y nada...Los problemas son los siguientes:
1.- Mi programa es un proyecto escolar realmente, pero sera entregado a una persona ajena con instalador y todo eso
Forzozamente tiene que ir enlazada a una base de datos de Access en la cual se van a registrar los productos de entrada y salida, ya conseguí enlazarla de esta manera
Hasta aqui todo bien con el hecho de enlazarla, pero el problema viene cuando se le instale en el computador a la persona, quiero poder enlazarla sin necesidad de asignarle una ruta, habia leido de usar un comando PATH o algo asi pero aun no doy con algo en concreto
2.- Ahora el otro problema que tengo es con los parametros...En un formulario doy de alta unos productos, y al momento de querer agregarlos a un ListView me marca el siguiente error:
Y aquí el código donde están los parámetros.
Espero y me puedan ayudar gente, se los agradeceria mucho, sin mas por el momento les mando un saludo
Gracias de antemano!!
1.- Mi programa es un proyecto escolar realmente, pero sera entregado a una persona ajena con instalador y todo eso
Forzozamente tiene que ir enlazada a una base de datos de Access en la cual se van a registrar los productos de entrada y salida, ya conseguí enlazarla de esta manera
Código:
DataTable tmpEntrada = new DataTable();
string CnnStr = @" Provider=Microsoft.ACE.OLEDB.12.0; " +
"Data Source=C:\\Users\\BET00\\Desktop\\prprpç\\Proyecto\\almacen\\almacen\\bin\\Debug\\almacen.accdb; " +
"Jet OLEDB:Database Password=; Persist Security Info=False;";
2.- Ahora el otro problema que tengo es con los parametros...En un formulario doy de alta unos productos, y al momento de querer agregarlos a un ListView me marca el siguiente error:
Y aquí el código donde están los parámetros.
Código:
void generaColumnas()
{
lvEntrada.Clear();
lvEntrada.View = View.Details;
lvEntrada.Columns.Add("", 0, HorizontalAlignment.Left);
lvEntrada.Columns.Add("Id ", 100, HorizontalAlignment.Left);
lvEntrada.Columns.Add("Producto", 240, HorizontalAlignment.Left);
lvEntrada.Columns.Add("Cantidad", 60, HorizontalAlignment.Right);
lvEntrada.Columns.Add("Precio", 60, HorizontalAlignment.Right);
lvEntrada.Columns.Add("Total", 80, HorizontalAlignment.Right);
}
void mostrarEntrada()
{
try
{
double varIVA = 0;
double varTOTAL = 0;
lvEntrada.Items.Clear();
for (int i = 0; i < tmpEntrada.Rows.Count; i++)
{
lvEntrada.Items.Add(tmpEntrada.Rows[i]["id"].ToString());
lvEntrada.Items[i].SubItems.Add(tmpEntrada.Rows[i]["id_articulo"].ToString());
lvEntrada.Items[i].SubItems.Add(tmpEntrada.Rows[i]["articulo"].ToString());
lvEntrada.Items[i].SubItems.Add(String.Format("{0:N}",
Convert.ToDouble(tmpEntrada.Rows[i]["cantidad"])));
lvEntrada.Items[i].SubItems.Add(String.Format("{0:C}",
Convert.ToDouble(tmpEntrada.Rows[i]["precio_compra"])));
lvEntrada.Items[i].SubItems.Add(String.Format("{0:C}",
(Convert.ToDouble(tmpEntrada.Rows[i]["precio_compra"]) *
Convert.ToDouble(tmpEntrada.Rows[i]["cantidad"]))));
varTOTAL += Convert.ToDouble(tmpEntrada.Rows[i]["precio_compra"]) *
Convert.ToDouble(tmpEntrada.Rows[i]["cantidad"]);
varIVA += (Convert.ToDouble(tmpEntrada.Rows[i]["cantidad"]) *
Convert.ToDouble(tmpEntrada.Rows[i]["precio_compra"])) -
((Convert.ToDouble(tmpEntrada.Rows[i]["cantidad"]) *
Convert.ToDouble(tmpEntrada.Rows[i]["precio_compra"])) / (1.16));
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
bool agregarArticulo(string prmId, double prmCantidad, double prmPrecioCompra, double prmIVA)
{
try
{
string varId = "";
string varNombre = "";
System.Data.OleDb.OleDbConnection cnn = new System.Data.OleDb.OleDbConnection(CnnStr);
cnn.Open();
string strSQL = "select articulo from articulos " +
"where id_articulo='" + prmId + "'";
System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand(strSQL, cnn);
System.Data.OleDb.OleDbDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
varId = prmId;
varNombre = dr["articulo"].ToString(); ;
//agregamos la venta a la tabla temporal
DataRow row = tmpEntrada.NewRow();
row["id_articulo"] = varId;
row["articulo"] = varNombre;
row["cantidad"] = prmCantidad;
row["precio_compra"] = prmPrecioCompra;
row["iva"] = prmIVA;
tmpEntrada.Rows.Add(row);
}
else
{
MessageBox.Show("El articulo no existe", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
return (false);
}
dr.Close();
cnn.Close();
return (true);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK,
MessageBoxIcon.Error);
return (false);
}
}
bool grabarEntrada(string prmFechaEntrada, string prmFechaFactura, string prmFolioFactura,
string prmNombreProveedor, string prmUserLogin)
{
try
{
System.Data.OleDb.OleDbConnection cnn = new System.Data.OleDb.OleDbConnection(CnnStr);
cnn.Open();
System.Data.OleDb.OleDbTransaction tran = cnn.BeginTransaction();
System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand();
cmd.Connection = cnn;
cmd.Transaction = tran;
//insertamos el registro de la Entrada
try
{
cmd.CommandText = "insert into entradas(fecha_entrada,fecha_factura,folio_factura,proveedor,user_login) " +
" values (#" + prmFechaEntrada + "#,#" + prmFechaFactura + "#,'" +
prmFolioFactura + "','" + prmNombreProveedor + "','" + prmUserLogin + "')";
cmd.ExecuteNonQuery();
//obtenemos el folio
int _FolioEntrada = 0;
cmd.CommandText = "select @@identity";
_FolioEntrada = Convert.ToInt32(cmd.ExecuteScalar());
//insertamos el detalle de laentrada
for (int i = 0; i < tmpEntrada.Rows.Count; i++)
{
string _IdArticulo = Convert.ToString(tmpEntrada.Rows[i]["id_articulo"]);
double _Cantidad = Convert.ToDouble(tmpEntrada.Rows[i]["cantidad"]);
double _IVA = Convert.ToDouble(tmpEntrada.Rows[i]["iva"]);
double _PrecioCompra = Convert.ToDouble(tmpEntrada.Rows[i]["precio_compra"]);
double _CostoPromedio = 0;
//insertamos el articulo
cmd.CommandText = "insert into entradas_detalle(id_entrada,id_articulo,cantidad,precio_compra,iva) " +
"values(" + _FolioEntrada + ",'" + _IdArticulo + "'," + _Cantidad + "," +
_PrecioCompra + "," + _IVA + ")";
cmd.ExecuteNonQuery();
//actualizamosexistencias
cmd.CommandText = "update articulos set " +
" existencia=existencia + " + _Cantidad + "" +
" where id_articulo='" + _IdArticulo + "'";
cmd.ExecuteNonQuery();
//establecemos el costo promedio
cmd.CommandText = "select avg(precio_compra) " +
" from entradas_detalle " +
" where id_articulo='" + _IdArticulo + "'";
_CostoPromedio = Convert.ToDouble(cmd.ExecuteScalar());
cmd.CommandText = "update articulos set " +
" costo_promedio=" + _CostoPromedio + "" +
" where id_articulo='" + _IdArticulo + "'";
cmd.ExecuteNonQuery();
}
//finalizamos la transaccion
tran.Commit();
cnn.Close();
MessageBox.Show("Entrada grabada correctamente",
"Información del Sistema", MessageBoxButtons.OK,
MessageBoxIcon.Information);
return (true);
}
catch (System.Data.OleDb.OleDbException errEntrada)
{
tran.Rollback();
cnn.Close();
MessageBox.Show(errEntrada.Message);
return (false);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK,
MessageBoxIcon.Error);
return (false);
}
}
private void btnAgregar_Click(object sender, EventArgs e)
{
try
{
if (agregarArticulo(txtIdArticulo.Text,
Convert.ToDouble(txtCantidad.Text),
Convert.ToDouble(txtPrecioCompra.Text),
0.16))
{
mostrarEntrada();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void btnGrabar_Click(object sender, EventArgs e)
{
if (grabarEntrada(dtpFechaEntrada.Value.ToShortDateString(),
dtpFechaFactura.Value.ToShortDateString(),
txtFolioFactura.Text, txtNombreProveedor.Text,"admin")) {
this.Close();
}
}
private void btnCancelar_Click(object sender, EventArgs e)
{
if (MessageBox.Show("¿Desea Salir?", "Salir", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == System.Windows.Forms.DialogResult.Yes)
{
this.Close();
}
}
private void txtIdArticulo_TextChanged(object sender, EventArgs e)
{
}
private void txtFolioFactura_TextChanged(object sender, EventArgs e)
Gracias de antemano!!