Existe algo mas rápido
Publicado por moises (13 intervenciones) el 03/03/2006 15:24:06
Hola buen día a todos, quisiera me dierán su valiosa opinión, si le ven algo incorrecto a lo que estoy haciendo, pues no encuentro la manero de hacer mas veloz esta consulta, o si por la carga de las tablas, no se puede hacer mucho, gracias por sus comentarios, les presento el código
Option Explicit
Dim adoConnect As ADODB.Connection
Dim g_adConn As ADODB.Connection
Dim m_Movtos As ADODB.Recordset
Dim entry
Dim strTemp, sValores As String
Dim nMovtos As Integer
Dim strConnect As String
Private Sub Form_Load()
Screen.MousePointer = vbHourglass
Set adoConnect = New ADODB.Connection
strConnect = "Provider=sqloledb;" & _
"Network Library=DBMSSOCN;" & _
"Data Source=SERVIDOR,1433;" & _
"Initial Catalog= RESTAURANT;" & _
"User ID=SA;" & _
"Password="
adoConnect.Open strConnect
Set g_adConn = adoConnect
Screen.MousePointer = vbDefault
Set m_Movtos = New ADODB.Recordset
strTemp = "SELECT mesero, cuenta, comanda, mesa, fecha, producto FROM Movtos_Det"
m_Movtos.Open strTemp, g_adConn
m_Movtos.MoveFirst
'Muy Veloz, pero la presentación Pésima filtrando por ej mesero='benito'
'devuelve 25mil registros de 285mil en 9 segs., muy atractivo, si no hay filtro
´pues a tomarse una cervecita, cafecito o lo que gustes pues tarda 3 min.
'y por otro lado la presenteción de los datos nada atractiva
List1.AddItem ""
Do While Not m_Movtos.EOF
With m_Movtos
sValores = .Fields!Cuenta & " " & .Fields!comanda & " " & .Fields!mesa & _
" " & .Fields!mesero & " " & .Fields!producto
List1.AddItem sValores
End With
m_Movtos.MoveNext
Loop
'por este camino, si filtras con el mismo ejemplo anterior, tarda 1 min, si no hay
'filtro igual a esperar mas de 3min.
'De no ser tan lento, este camino es el ideal, pues puedes manipular (Creo) con
'un estilo mas elegante los registros.
MSHFlexGrid1.Rows = 1
MSHFlexGrid1.Cols = 6
MSHFlexGrid1.TextMatrix(0, 0) = "Cuenta"
MSHFlexGrid1.TextMatrix(0, 1) = "Comanda"
MSHFlexGrid1.TextMatrix(0, 2) = "Mesa"
MSHFlexGrid1.TextMatrix(0, 3) = "Fecha"
MSHFlexGrid1.TextMatrix(0, 4) = "Mesero"
MSHFlexGrid1.TextMatrix(0, 5) = "Producto"
MSHFlexGrid1.ColWidth(0) = 2000
MSHFlexGrid1.ColWidth(1) = 2000
MSHFlexGrid1.ColWidth(2) = 2000
MSHFlexGrid1.ColWidth(3) = 2000
MSHFlexGrid1.ColWidth(4) = 2000
MSHFlexGrid1.ColWidth(5) = 2000
n = 1
While Not m_Movtos.EOF
With m_Movtos
entry = .Fields!cuenta & Chr(9)
entry = entry & .Fields!comanda & Chr(9)
entry = entry & .Fields!mesa & Chr(9)
entry = entry & .Fields!fecha & Chr(9)
entry = entry & .Fields!mesero & Chr(9)
entry = entry & .Fields!producto & Chr(9)
MSHFlexGrid1.AddItem entry
End With
m_Movtos.MoveNext
Wend
End Sub
*Algo está mal?, o no hay otra cosa mejor que hacer, te agradezco tus comantarios.
Moises Fabro
Option Explicit
Dim adoConnect As ADODB.Connection
Dim g_adConn As ADODB.Connection
Dim m_Movtos As ADODB.Recordset
Dim entry
Dim strTemp, sValores As String
Dim nMovtos As Integer
Dim strConnect As String
Private Sub Form_Load()
Screen.MousePointer = vbHourglass
Set adoConnect = New ADODB.Connection
strConnect = "Provider=sqloledb;" & _
"Network Library=DBMSSOCN;" & _
"Data Source=SERVIDOR,1433;" & _
"Initial Catalog= RESTAURANT;" & _
"User ID=SA;" & _
"Password="
adoConnect.Open strConnect
Set g_adConn = adoConnect
Screen.MousePointer = vbDefault
Set m_Movtos = New ADODB.Recordset
strTemp = "SELECT mesero, cuenta, comanda, mesa, fecha, producto FROM Movtos_Det"
m_Movtos.Open strTemp, g_adConn
m_Movtos.MoveFirst
'Muy Veloz, pero la presentación Pésima filtrando por ej mesero='benito'
'devuelve 25mil registros de 285mil en 9 segs., muy atractivo, si no hay filtro
´pues a tomarse una cervecita, cafecito o lo que gustes pues tarda 3 min.
'y por otro lado la presenteción de los datos nada atractiva
List1.AddItem ""
Do While Not m_Movtos.EOF
With m_Movtos
sValores = .Fields!Cuenta & " " & .Fields!comanda & " " & .Fields!mesa & _
" " & .Fields!mesero & " " & .Fields!producto
List1.AddItem sValores
End With
m_Movtos.MoveNext
Loop
'por este camino, si filtras con el mismo ejemplo anterior, tarda 1 min, si no hay
'filtro igual a esperar mas de 3min.
'De no ser tan lento, este camino es el ideal, pues puedes manipular (Creo) con
'un estilo mas elegante los registros.
MSHFlexGrid1.Rows = 1
MSHFlexGrid1.Cols = 6
MSHFlexGrid1.TextMatrix(0, 0) = "Cuenta"
MSHFlexGrid1.TextMatrix(0, 1) = "Comanda"
MSHFlexGrid1.TextMatrix(0, 2) = "Mesa"
MSHFlexGrid1.TextMatrix(0, 3) = "Fecha"
MSHFlexGrid1.TextMatrix(0, 4) = "Mesero"
MSHFlexGrid1.TextMatrix(0, 5) = "Producto"
MSHFlexGrid1.ColWidth(0) = 2000
MSHFlexGrid1.ColWidth(1) = 2000
MSHFlexGrid1.ColWidth(2) = 2000
MSHFlexGrid1.ColWidth(3) = 2000
MSHFlexGrid1.ColWidth(4) = 2000
MSHFlexGrid1.ColWidth(5) = 2000
n = 1
While Not m_Movtos.EOF
With m_Movtos
entry = .Fields!cuenta & Chr(9)
entry = entry & .Fields!comanda & Chr(9)
entry = entry & .Fields!mesa & Chr(9)
entry = entry & .Fields!fecha & Chr(9)
entry = entry & .Fields!mesero & Chr(9)
entry = entry & .Fields!producto & Chr(9)
MSHFlexGrid1.AddItem entry
End With
m_Movtos.MoveNext
Wend
End Sub
*Algo está mal?, o no hay otra cosa mejor que hacer, te agradezco tus comantarios.
Moises Fabro
Valora esta pregunta
0