我使用VB.net,我尝试从DataTable更新更新到MySql中的数据库,这没关系,它可以工作,但是很慢!!
详情
数据表被称为" listado"
当我发现更改时,我需要将其更改为另一个数据表,我可以看到这是非常缓慢的部分
问题
很慢,大约15分钟。 这样做的最佳方式是什么?
代码
Using conexiontemporal As New MySqlConnection(conexionstring)
Dim sql As String
Dim cm As MySqlCommand
Dim da As MySqlDataAdapter
sql = "SELECT id, nombre, (SELECT nombre FROM categoriadeproductos WHERE id = categoria) AS categoria , cantidad, stockminimo, precio, precio2, costo, ganancia, fecha, codigobarras FROM productos WHERE promocionid = 0 AND eliminado = 0"' AND (nombre LIKE '%"& filtro &"%')"& cate & orden
cm = New MySqlCommand()
cm.CommandText = sql
cm.CommandType = CommandType.Text
cm.Connection = conexiontemporal
da = New MySqlDataAdapter(cm)
Dim actualiza As MySqlCommand
actualiza = New MySqlCommand()
actualiza.Connection = conexiontemporal
actualiza.CommandText="INSERT INTO movimientostock (idproducto, razondemovimiento, cantidad, dineroanterior) Select @idnueva, 'CAMBIO DE PRECIO COSTO', @costonueva, (Select costo from productos where id = @idnueva) WHERE @costonueva <> (Select costo from productos where id = @idnueva) ;" & _
" INSERT INTO movimientostock (idproducto, razondemovimiento, cantidad, dineroanterior) Select @idnueva, 'CAMBIO DE PRECIO FRACCIONARIO', @precio2nueva, (Select precio2 from productos where id = @idnueva) WHERE @precio2nueva <> (Select precio2 from productos where id = @idnueva) ;" & _
" INSERT INTO movimientostock (idproducto, razondemovimiento, cantidad, dineroanterior) Select @idnueva, 'DINERO', @precionueva, (Select precio from productos where id = @idnueva) WHERE @precionueva <> (Select precio from productos where id = @idnueva) ;" & _
" INSERT INTO movimientostock (idproducto, razondemovimiento, cantidad, dineroanterior) Select @idnueva, 'CAMBIO DE GANANCIA', @ganancianueva, (Select ganancia from productos where id = @idnueva) WHERE @ganancianueva <> (Select ganancia from productos where id = @idnueva) ;" & _
" INSERT INTO movimientostock (idproducto, razondemovimiento, cantidad, dineroanterior) Select @idnueva, 'ENTRADA', (@cantidadnueva - (Select cantidad from productos where id = @idnueva)), (Select precio from productos where id = @idnueva) * (@cantidadnueva - (Select cantidad from productos where id = @idnueva)) WHERE @cantidadnueva > (Select cantidad from productos where id = @idnueva);" & _
" INSERT INTO movimientostock (idproducto, razondemovimiento, cantidad, dineroanterior) Select @idnueva, 'SALIDA', ((Select cantidad from productos where id = @idnueva) - @cantidadnueva), - ((Select precio from productos where id = @idnueva) * ((Select cantidad from productos where id = @idnueva) - @cantidadnueva)) WHERE @cantidadnueva < (Select cantidad from productos where id = @idnueva) ;" & _
" UPDATE productos Set categoria = (Select id FROM categoriadeproductos WHERE nombre = @nombrecategoria), cantidad = @cantidadnueva, " & _
" stockminimo = @stockminimonueva, precio = @precionueva, precio2 = @precio2nueva, costo = @costonueva, ganancia = @ganancianueva, codigobarras = @codigobarrasnueva, ultimamodificacion = CURRENT_TIMESTAMP WHERE id = @idnueva;"
actualiza.Parameters.Add("stockminimonueva", MySqlDbType.Decimal,10.2,"stockminimo")
actualiza.Parameters.Add("cantidadnueva", MySqlDbType.Decimal,10.2,"cantidad")
actualiza.Parameters.Add("precionueva", MySqlDbType.Decimal,10.2,"precio")
actualiza.Parameters.Add("precio2nueva", MySqlDbType.Decimal,10.2,"precio2")
actualiza.Parameters.Add("costonueva", MySqlDbType.Decimal,10.2,"costo")
actualiza.Parameters.Add("ganancianueva", MySqlDbType.Decimal,10.2,"ganancia")
actualiza.Parameters.Add("idnueva", MySqlDbType.Int32,11,"Id")
actualiza.Parameters.Add("nombrecategoria", MySqlDbType.Text,0,"categoria")
actualiza.Parameters.Add("codigobarrasnueva", MySqlDbType.VarChar,50,"codigobarras")
da.UpdateCommand = actualiza
'Dim actualiza As MySqlCommandBuilder = New MySqlCommandBuilder(da)
da.Update(listado)
cm.Dispose
da.Dispose
End Using
谢谢!