Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Por favor necesito Ayuda!!!!!

Estas en el tema de Por favor necesito Ayuda!!!!! en el foro de Visual Basic clásico en Foros del Web. Hola a todos, mi nombre es Patricia y necesito que me ayuden, estoy desarrollando una seccion de un sistema que tiene por objetivo llevar el ...
  #1 (permalink)  
Antiguo 08/12/2005, 09:49
 
Fecha de Ingreso: agosto-2005
Mensajes: 7
Antigüedad: 18 años, 8 meses
Puntos: 0
Por favor necesito Ayuda!!!!!

Hola a todos, mi nombre es Patricia y necesito que me ayuden, estoy desarrollando una seccion de un sistema que tiene por objetivo llevar el control de ingresos y egresos de medicamentos de una farmacia de un hospital, me toco desarrollar la seccion de Ingresos de medicamentos el cual se puede realizar por las siguientes transacciones: Licitacion, Concurso de Precio, Compra Directa y por ultimo Donaciones que puedan hacer otras instiuciones a la farmacia, pero me salta un error en la operacion de "Modificar datos de una Licitacion", para esta operacion de modificar conecto 4 tablas que son : Licitacion, InsumoLicitacion, Insumos y Subgrupo, para ello utilizo un datagrid que me muestra algunos campos de estas 4 tablas, esto lo hago en el evento Form_Load de la siguiente manera:

Private Sub Form_Load()
Dim adoModificarDatos as Recordset
Dim StrSQL as string

Set adoModificar Datos = New Recordset
StrSQL="Select Insumo.CgoInsumo, Insumo.Nombre, Insumo.CgoSubgrupo, " & _ "Subgrupo.NombreSubgrupo, Insumo.Presentacion, " & _
"Insumo.PrecioUnitario, Insumo.CantidadMinima, " & _
"InsumoLicitacion.CantidadAdjudicada, InsumoLicitacion.CantidadEntregada, " & _ "InsumoLicitacion.CantidadPendiente, InsumoLicitacion.FchaVencimiento " & _ "from Licitacion INNER JOIN ((Subgrupo INNER JOIN Insumo ON " & _
"Subgrupo.cgosubgrupo =Insumo.CgoSubgrupo) INNER JOIN " & _
"InsumoLicitacion ON Insumo.CgoInsumo = InsumoLicitacion.CgoInsumo) " & _
"ON Licitacion.NroComprobanteL=InsumoLicitacion.NroCom probanteL " & _
"Where(((Licitacion.NroComprobanteL) Like '" & FRMLICITACION.MascaraLicitacion(0).text ' ))"

With adoModificarDatos
.open strSQL, db, adopenkeyset, adLockOptimistic
Set Datagrid1.DataSource = adoModificarDatos
With Datagrid1
.AllowUpdate=true
.AllowAddNew=False
.AllowDelete=false
.AllowRowSizing=False
...............................y asi hago uso de otras propiedades del datagrid......
es un data grid que posee 11 columnas que son campos de las distintas tablas antesmencionadas, de las cuales solo permito que se modifiquen 4 campos el que son: el CgoSubgrupo (es un numero que indica que permite clasificar a los medicamentos en distintos tipos de grupos por ejemplo: anestesicos, parenterales, medicamentos, y otros), l precio del medicamento, su cantidad minima (que es la cantidad minima ideal que deberia de existir en farmacia no deberia existir una cantida inferior a esta), y la fecha de vencimientos del medicamento, solo estos 4 columnas.-
Bueno he seguido mi codigo paso a paso (con F8), y vi que hace lo siguiente:
cuando analiza el datagrid entra en los siguientes eventos del mismo:
1 . Entra al evento Datagrid1_BeforeColUpdate
2. Entra al evento Datagrid1_AfterColUpdate
3. Entra al evento Datagrid1_AfterColEdit
4. Entra al evento Datagrid1_BeforeUpdate
y es aqui donde me salta una ventana que me muesta el siguiente error:

"Los cambios solicitados en la tabla no ser realizaron correctamente porque crearian valores duplicados en el indice, clave principal o relaciones, cambie los datos en el campo o los campos que contiene datos duplicados, quite el indice para permitir entradas duplicadas e intentelo de nuevo"

Segun la ayuda de visual, me dice que el el evento beforeUpDate, se produce antes de que los datos de un control datagrid pasen al bufer de copia de control.
en realidad yo ve el cambio en la fila del datagrid que he modificado, pero cuando hago click en cualquier otra fila es cuando salta el erro escrito arriba.

La pregunta del millon es: como solucion este error
porque en realidad cuando voy a hacer los cambios en los eventos del datagrid, yo trabajo sobre un tabla especifica ya no sobre las 4 tablas, es ahi cuando utilizo los metodos Update pero, no se si esto se puede solucionar utilizando la Sentencia UPDATE en vez de Select que utilizo cuando conecto el datagrid1 a las tablas por favor ayudenme.....................gracias Patricia
  #2 (permalink)  
Antiguo 09/12/2005, 08:33
Avatar de reel  
Fecha de Ingreso: febrero-2004
Ubicación: Managua, Nicaragua
Mensajes: 496
Antigüedad: 20 años, 3 meses
Puntos: 1
No puedes usar el mismos recordset para conectar el DataGrid y actualizar los datos en la mismo intante.

En tu código no veo que uses dos RecordSet, te recomiendo que generes una consulta UPDATE y que la ejecutes en otro Recordset para que no afectes el DataGrid.

Saludes
__________________
Leer es Saber, REEL.
Mi Blog
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 12:53.