Visual Basic - ING. DUPLICADO(MSFLEXGRID)

Life is soft - evento anual de software empresarial
 
Vista:

ING. DUPLICADO(MSFLEXGRID)

Publicado por CATALINA CHEVERE (1 intervención) el 07/03/2006 17:29:12
Hola tengo un MSFLEXGRID al cual le ingreso registros escribiendo sobre el. lo que quiero es que cuando escribo un codigo de producto en la 1 columna del MSFLEXGRID(al escribir el codigo en la 1 columna y al hacer enter , si este codigo se encuentra en la base de dato se desplegara los otros datos en las siguientes columnas del MSFLEXGRID de lo contrario me manda un mensaje “NO EXISTE EL CODIGO”), si este codigo ya esta escrito en la fila anterior? No me acepte o me mande un mensaje que el codigo ya fue digitado
El MSFLEXGRID me representa a una factura, ya que al imprimir el MSFLEXGRID no quiero que aparesca una factura con productos repetidos

NOTA: a proposito el codigo que tengo como ejemplo les puede servir a muchos amigos que estan aprendiendo a programar, para que sepan como se puede ingresar , modificar ,eliminar en un MSFLEXGRID actuando directamente sobre el, en otras palabras escribir,corregir lo que esta escribiendo borrando carácter por caracter todo esto combinando con la tecla enter o intro

Aquí va el codigo que estoy trabajando;

Private Sub Form_Load()
Set cnn = New Connection
Set rstabla = New Recordset

With cnn
.Provider = "microsoft.jet.oledb.4.0"
.ConnectionString = "c:\lacteos.mdb"
.Open
End With
MSHFlexGrid1.Cols = 7
MSHFlexGrid1.ColWidth(0) = 350
MSHFlexGrid1.ColWidth(1) = 785
MSHFlexGrid1.ColWidth(2) = 3970
MSHFlexGrid1.ColWidth(3) = 920
MSHFlexGrid1.ColWidth(4) = 1190
MSHFlexGrid1.ColWidth(5) = 920
MSHFlexGrid1.ColWidth(6) = 1020

MSHFlexGrid1.BackColorSel = RGB(100, 184, 150)
MSHFlexGrid1.BackColorBkg = RGB(110, 110, 110)
MSHFlexGrid1.ForeColorSel = &HFF&
MSHFlexGrid1.Rows = 2 'determina el número total de columnas o filas en el flexgrid jerárquico
MSHFlexGrid1.BackColorFixed = &HC080FF
MSHFlexGrid1.ForeColorFixed = &HFFFFFF
MSHFlexGrid1.TextMatrix(0, 0) = " Nº"
MSHFlexGrid1.TextMatrix(0, 1) = "CODIGO"
MSHFlexGrid1.TextMatrix(0, 2) = " DESCRIPCION"
MSHFlexGrid1.TextMatrix(0, 3) = "VAL.UNIT"
MSHFlexGrid1.TextMatrix(0, 4) = "UNIDAD CAJA"
MSHFlexGrid1.TextMatrix(0, 5) = "CANTIDAD"
MSHFlexGrid1.TextMatrix(0, 6) = "VALOR TOTAL"
limpiar
End Sub

'Permite editar una celda
Private Sub MSHFlexGrid1_keypress(keyascii As Integer)
If keyascii >= 32 And keyascii <= 127 Then
MSHFlexGrid1.Text = MSHFlexGrid1.Text & Chr(keyascii)
End If
Select Case keyascii
Case vbKeyReturn, vbKeyTab
'mueve para la proxima celda.
With MSHFlexGrid1

If ((.Col + 5 < .Cols - 1) Or .Col = 5) And _
IsNumeric(.TextMatrix(.Row, 5)) _
And IsNumeric(.TextMatrix(.Row, 3)) Then
.Col = .Col + 1
.TextMatrix(.Row, 6) = (.TextMatrix(.Row, 5)) * (.TextMatrix(.Row, 3))

‘si es numerico lo que se digita en la columna 6 al hacer enter se aumenta ena fila mas al MSFLEXGRID
ElseIf IsNumeric(.TextMatrix(.Row, 5)) And IsNumeric(.TextMatrix(.Row, 6)) _
And IsNumeric(.TextMatrix(.Row, 0)) Then
.Rows = .Rows + 1
.Row = .Row + 1
.Col = 1

‘ si esta con “ ” la fila del MSFLEXGRID, al hacer enter no buscara el codigo
En la base de dato
ElseIf .TextMatrix(.Row, 1) <> "" And Trim(txt_rut) <> "" And Trim(txt_razon) <> "" _
And Trim(txt_pag) <> "" And Trim(txt_fech) <> "__/__/____" And Trim(txt_fecha) <> "__/__/____" Then
If rstabla.State = 1 Then rstabla.Close
rstabla.Open " select productos.descripcion, productos.precio_unitario, " _
& " productos.unidad_caja from productos where productos.codigo = ' " & (.TextMatrix(.Row, 1)) & " ' " _
, cnn, adOpenKeyset, adLockOptimistic, adCmdText
If Not (rstabla.BOF Or rstabla.EOF) Then
rstabla.MoveFirst
Do While Not rstabla.EOF
.TextMatrix(.Row, 2) = rstabla!descripcion
.TextMatrix(.Row, 3) = Str(rstabla!precio_unitario)
.TextMatrix(.Row, 4) = rstabla!unidad_caja
rstabla.MoveNext
With MSHFlexGrid1
For x = 1 To .Rows - 1
.Col = 0
.Row = x
.Text = x
Next
End With
Loop
.Col = 5
Else
MsgBox "CODIGO NO EXISTE"
.Col = 1
End If
rstabla.Close
End If
End With
End Select
End Sub

'Permite borrar
Private Sub MSHFlexGrid1_KeyUp(KeyCode As Integer, Shift As Integer)
'manipular las teclas Supr (Del) y Retroceso (BackSpace)
Select Case KeyCode
Case vbKeyDelete
MSHFlexGrid1.Text = ""
Case vbKeyBack
If Len(MSHFlexGrid1.Text) > 0 Then
MSHFlexGrid1.Text = Left(MSHFlexGrid1.Text, Len(MSHFlexGrid1.Text) - 1)
End If
End Select
End Sub

GRACIAS....
CATALINA CHEVERE
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:ING. DUPLICADO(MSFLEXGRID)

Publicado por Eric (3 intervenciones) el 17/03/2006 00:31:47
Hola
Bueno talvez a la fecha ya tengas la solucion pero si no lo que tienes que hacer es lo siguiente:

Dim x as integer

for x = 1 to MSHFlexGrid1.rows-1
if MSHFlexGrid1.TextMatrix(x,1) = MSHFlexGrid1.TextMatrix (MSHFlexGrid1.row,1) then
msgbox "codigo ya fue digitado"
exit Sub
endif
next

Espero que te sirva el codigo este lo puedes poner en cualquier evento que se ejecute despues de editar o en el keydown o keyup, como se te haga mas facil.
salu2.
P.D.: Cualquier duda, solo dime.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

codigo para duplicado de datos en vb6.0

Publicado por wuilver (1 intervención) el 09/11/2015 05:48:30
ola yo igual tengo el mismo problema
quiero un codigo para que no me duplique datos
ya que soy novato en esto de programar
se los agradecería mucho
solo pido un ejemplo...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Holaaa

Publicado por Luisq (1 intervención) el 18/01/2007 02:22:33
oe tio .. me servio de muxo tus codigos .. aunk ahora estoy haciendo una factura .. con el flexfgrid y necesito llevar los datos del flexgrid a una base de datos como access y no puedo .. mnadate los codigos Px porfa es para un trabajo !! tooy estudiando computacion e informatica .. y me dejaron ese trabajo .. si no fuera mucha moslestia ahh y tambien un codigo para imprimir los datos k se encuntran en mi flexgrid !!!!!!!!!!!!!!! ;) :)
para cualquier cosa .. me ubicas en mi msn !
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ING. DUPLICADO(MSFLEXGRID)

Publicado por yeini (1 intervención) el 05/09/2008 17:30:14
hola mira yo estoy trabajando en un MSHFlexGrid pero al momento de correr el programa no me da acceso a escribir en los campos de el me puedes decir como hagpo en este caso .... en un programa de registro
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar