Visual Basic Foro
Programación => Bases de Datos => Mensaje iniciado por: Ever Cerna en Julio 05, 2012, 12:03:20 pm
-
Buenos días Amigos.
Tengo algunos inconvenientes con este control DATACOMBO.
El primer problema que tengo es que a medida que agrego nuevos datos se me desordena los datos en el DATACOMBO los datos que tengo son de esta manera 2012-0000001, 2012-0000002,....... y asi en ese orden, el problema es que al llegar al 2012-0000005, el dato 2012-0000006 se sube en el primer lugar, para que tengan idea de que les hablo les pongo una imagen.
(http://img29.imageshack.us/img29/5563/capturair.png) (http://imageshack.us/photo/my-images/29/capturair.png/)
Se dan cuenta ahora de que les estoy comentando ese es mi primer problema, la verdad no se porque sucede eso deberia de ir en orden.
el otro problema que me surge es que al generar otro nuevo cliente me duplica el codigo 2012-0000006 debería de generarme 2012-0000010 pero me sale duplicado 2012-0000006 no se si estará bien mi código para generar esos numero o esta mal algo en la tabla??? les dejo el código que uso para generar haber si me echan una manito
If .RecordCount > 0 Then
.MoveLast
lblNumGuia.Caption = Trim(Format(Date, "YYYY") + "-" + String(7 - Len(Trim(Str(Val(Right(!NumGuia, 7)) + 1))), "0") + Trim(Str(Val(Right(!NumGuia, 7)) + 1)))
Else
lblNumGuia.Caption = Format(Date, "YYYY") & "-" & "0000001"
End If
Salu2.
-
Pero el problema no es del DataCombo... o sea ¿Como estas llenando el DataCombo? publica tu código SQL con el que lo llenas pues allí debería estar el problema.
-
Buenas tardes YAcosta. gracias x responder
este es el codigo para conectarme a la tabla.
Sub ConectarTabla()
On Error Resume Next
Dim Registros() As Variant 'array para usar con GetRows
Set RSTIdentifi = New ADODB.Recordset
With RSTIdentifi
.ActiveConnection = CN
.CursorType = adOpenKeyset
.Source = "Select * From Identificaciones"
.Open
FrmMain.lblTotalReg.Caption = .RecordCount ' da -1
'Obtiene el conjunto de filas
Registros = .GetRows()
'Muestra la cantidad de elementos del array, es decir de registros ---> 6246
FrmMain.lblTotalReg.Caption = UBound(Registros, 2) + 1
End With
End Sub
Y de esta forma lo cargo en el Form_load
Private Sub Form_Load()
Call ConectarBDD: Call ConectarTabla
Set CbList.RowSource = RSTIdentifi '====>CbList = ES EL DATACOMBO
CbList.ListField = ("NumGuia")
CbList.BoundColumn = ("NumGuia")
RSTIdentifi.MoveFirst
CbList.BoundText = RSTIdentifi.Fields("NumGuia")
End Sub
Esa es la forma como cargo los datos en el DataCombo, que estoy asiendo mal??
Salu2.
-
Pues tu haces Select * From Identificaciones y no indicas el campo de ordenamiento, Si tu campo donde estan los datos 2012-0000000## se llama Codigo, pues lo ordenas asi:
Select * From Identificaciones Order By Codigo
Un poco dificil saberlo sino sabemos como estan tus campos, quiza el 2012-0000etc son dos campos que aun se resuelve ordenando los campos, pero si es uno solo te debe funcionar el Order By.
Y la parte:
FrmMain.lblTotalReg.Caption = .RecordCount ' da -1 es un problema de cursores. En este hilo (http://leandroascierto.com/foro/index.php?topic=1498.msg8510#msg8510) se te explica perfectamente sobre ello.
Saludos
-
Buenas YAcosta
Perfecto me funciono solo era
SELECT * FROM Identificaciones ORDER BY NumGuia
Ahora si me ordena los datos correctamente y ahora si al querer agregar un nuevo cliente ya no me sale error de duplicado se soluciono solo al poner ORDER BY NumGuia.
Pero YAcosta, a que se debe esos errores me podrias explicar por favor?
Salu2.
-
Bueno, en el tema del ordenamiento al no indicarlo te esta ordena por otro campo, probablemente por el primer campo que suele ser el Id, o quiza se esta ordenando por fecha, dificil saberlo sin contar con los datos de la tabla pero creo que va por alli.
Saludos