Visual Basic - msflexgrid registron en posiciones intermedias

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil

msflexgrid registron en posiciones intermedias

Publicado por Didac (3 intervenciones) el 21/04/2015 12:51:41
Hola,
Tengo una BBDD en acces gestionada a traves de los objetos MSFlexgrid y Data. Mediante las instrucciones addnew, updaterecord y refresh, voy añadiendo registros a la tabla. Mi experiencia con visual basic 6.0 se remonta 15 años atrás, en la uni. Desde entonces no volvi a utilizar este programa, hasta hace unos 6 meses, que por temas de trabajo, me vi obligado a retomarlo. Gracias a todos estos foros, he podido ir avanzando y creando varias cosas.

Pero llevo ya un par de meses estancado con un problema que no consigo solucionar, y ni siquiera encuentro en los foros gente con la misma duda que yo. A ver si ustedes pueden ayudarme, ahí va:
El problema es que cuando añado un nuevo registro, no siempre me lo añade el ultimo, a veces me lo añade en qualquier otra posicion intermedia. Para mi es muy importante que se añadan en la ultima posicion, porque en esta tabla se registran las horas de funcionamiento y el gasoil que tienen una serie de maquinas.

Alguna idea al respecto? Necesitaria controlar el indice d ela tabla, para poder asegurarme que todo nuevo registro se añade al final, y no en ninguna posicion intermedia. Es algo aleatorio, no he conseguido ver si sigue algun tipo de patron. Les ha pasado lo mismo alguna vez?
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
sin imagen de perfil
Val: 147
Ha disminuido 1 puesto en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

msflexgrid registron en posiciones intermedias

Publicado por Juan Gilberto (323 intervenciones) el 21/04/2015 17:49:55
Yo nunca enlazo ningun control a una tabla, precisamente por esos problemas raros
Todo lo soluciono con codigo
Asi de esa manera puedo crear una columna oculta en el MSFlexGrid y utilizarla como ordenamiento usando el metodo sort si acaso deseo un orden especifico o simplemente le voy agregando renglones y se van quedando al final
Prueba y veras
Que necesitas saber?
Abrir base de datos
Abrir tabla
Llenar el grid
etc.
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

msflexgrid registron en posiciones intermedias

Publicado por Didac (3 intervenciones) el 21/04/2015 18:08:47
Hola, muchas gracias en primer lugar.

La verdad es que me incline por la opcion mas facil de programar:

dataX.recordset.addnew

dataX.updaterecord
dataX.refresh

Si me puedes pasar un ejemplo del tipo de programacion que me planteas, mediante código, te lo agradecería mucho.

Con la propiedad sort he tenido problemas, porque me lo ordena visualmente en le msflexgrid, pero no en la base de datos.
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

msflexgrid registron en posiciones intermedias

Publicado por Didac (3 intervenciones) el 22/04/2015 10:41:27
Hola, he evolucionado un pelin.....mediante este código consigo introducir los nuevos registros en la ultima posicion del msflexgrid. Pero.....

1
2
3
4
5
6
7
MSFlexGrid8.Rows = MSFlexGrid8.Rows + 1
MSFlexGrid8.Row = MSFlexGrid8.Rows - 1
 
MSFlexGrid8.TextMatrix(MSFlexGrid8.Row, 1) = FECHA
MSFlexGrid8.TextMatrix(MSFlexGrid8.Row, 2) = mAquinA
MSFlexGrid8.TextMatrix(MSFlexGrid8.Row, 3) = HORAS
MSFlexGrid8.TextMatrix(MSFlexGrid8.Row, 4) = GASOI

....ahora necesito que esta linea se grabe en una base de datos access. Para ello utilizo este código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Dim Cn1 As ADODB.Connection
Dim rs As ADODB.Recordset
Dim cmd As ADODB.Command
 
 
 
'GASOILX.MSFlexGrid8.Rows = GASOILX.MSFlexGrid8.Rows + 1
'GASOILX.MSFlexGrid8.Row = GASOILX.MSFlexGrid8.Rows - 1
 
 
'conectas base local
Set Cn1 = New ADODB.Connection
With Cn1
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & "C:\Documents and Settings\Administrator\Desktop\Programa Taller\RECAMBIOS.mdb;Persist Security Info=False"
.CommandTimeout = 30
.ConnectionTimeout = 30
.Open
End With
 
Set rs = New ADODB.Recordset
With rs
.ActiveConnection = Cn1
.CursorLocation = adUseClient
.CursorType = adOpenKeyset
.Source = "select * from RESPOSTAR_MAQUINASX"
.Open
End With
 
'insertas los registros en base local
Set cmd = New ADODB.Command
With cmd
.ActiveConnection = Cn1
.CommandType = adCmdText
.CommandText = "INSERT INTO RESPOSTAR_MAQUINASX(FECHA,MAQUINA,GASOIL,HORAS)VALUES('" & _
GASOILX.MSFlexGrid8.TextMatrix(SUPERINDICE, 1) & "', '" & GASOILX.MSFlexGrid8.TextMatrix(SUPERINDICE, 2) & "', '" & _
GASOILX.MSFlexGrid8.TextMatrix(SUPERINDICE, 3) & "', '" & GASOILX.MSFlexGrid8.TextMatrix(SUPERINDICE, 4) & "')"
.Execute
End With
Set cmd = Nothing


Pero.......al seguir sin poder controlar la fila de la tabla donde introducir los nuevos registros en la base de datos, estos se me insertan en una posicion intermedia en la tabla, y no en la ultima posicion. Como puedo controlar la fila donde insertar los datos en la tabla acces?
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