elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  [SOLUCIONADO] Agregar Registro
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [SOLUCIONADO] Agregar Registro  (Leído 3,033 veces)
VanHan

Desconectado Desconectado

Mensajes: 41


.:: [ vHn ] ::.


Ver Perfil WWW
[SOLUCIONADO] Agregar Registro
« en: 19 Noviembre 2010, 20:33 pm »


Bueno como ven en la imágen, mi idea es añadir un separador en esas posiciones, donde estan las lineas en rojo.

  • Pero q es lo q pasa... Bueno si intentamos añadir los separadores en medio del codigo 3 y 4, al añadirlo y ordenarlo, se pondra abajo de el ultimo dato que tenga la fecha 08/07/2010, ¿pq? bueno porque esta ordenado por fechas el ListView, ahora si consulto, ¿cómo ariamos para ordenarlo en medio del codeigo 3  y 4 y q quede ordenado por fecha?

Esto pasa cuando añado entre 3 y 4 un sepadador.


  • Aclaro q ordeno por la columna Fecha de Entrega
DB click aquí para descaragar el ejemplo

Gracias a todos por sus ayudas!!!

Salu2
[vHn]


« Última modificación: 23 Noviembre 2010, 12:59 pm por VanHan » En línea

.:: I'm GeeK ::.
BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: [DUDA] Agregar Registro
« Respuesta #1 en: 20 Noviembre 2010, 03:02 am »

Agrega otro campo que relacione por categorias es decir

Para que quede asi:

Codigo | Producto |      Fecha        | Observacion
     1         Prod.1       25/09/2010        Ninguna
     2         Prod.2       25/09/2010        Ninguna   
     3         Prod.3       25/09/2010        Reservado
     5       =======   25/09/2010       ========
     4         Prod.4       26/09/2010        Ninguna

Deberas agregar otro campo en tu BDD  como es: Agrupacion

Codigo | Producto |      Fecha        | Observacion    |  Agrupacion
     1         Prod.1       25/09/2010        Ninguna                1
     2         Prod.2       25/09/2010        Ninguna                1
     3         Prod.3       25/09/2010        Reservado             1
     5       =======   25/09/2010       ========               0
     4         Prod.4       26/09/2010        Ninguna                 2

Obviamente en agrupacion pones numeros para que te sea factible lo que pides, y en el ListView o DataGrid o sepa Chachito donde los imprimas, No imprimes hay dicho campo solo te ayudaria a ti en lo que deseas.

Es una forma basica y simple, en mi caso no agregaria dicha linea separador por espacio en la BDD aun que hay otra obtativa y es esta:

Creas una tabla de configuracion

ID   |   Range
0         1-5,8
1         6,7,10-20
...
N        {N,N2,Nx-Nn}

 * Es decir que los registro desde 1 hasta 5 y 8,  son un grupo
 * El siguiente registro es decir 6,7,10 hasta el 20 es otro grupo

Es decir: Cada registro es un grupo y estaria delimitado por tu linea que deberas programar por codigo mas no registrar en la BDD por que seria BASURA, en una BDD gorda de datos este metodo es mas factible que el 1ero, por su simplicidad y reduccion de datos en la misma.

OJO PRECAUCIÓN: Este metodo de relacion de uno a muchos o muchos a muchos, asi que tu codigo de registro debera ser de precision de lo contrario crearas relaciones de muchos a muchos si es que no tienes delimitado tus bases, la ventaja que es Maniobrable /Dinamico la Desventaja que si usas PL/SQL seria mejor usar la 1ra optativa...

* Donde el campo Range es un campo tipo string que dice de forma simplificada un rango dicho:

Puedes usar esta funcion para generar dichos rangos;

GetSimplificNumbers

[SRC] Abbreviate_Numeric_Array [by *PsYkE1] <-- Trae la funcion para desabreviar = sirve para mi funcion ya que lo rete a hacer dicha funcion de simplificación.

Ojo si usas este 2da alternativa entonces el campo Agrupacion de la 1ra solucion se desecharia...

Cabe mencionar que esta segunda forma es mas liviana para la BDD y no ocuparia tanto espacio y eso es lo que se busca en una BDD la primera tiene patrones que se pueden omitir con este 2do metodo.

P.D.: lo siento por las faltas de ortografia xP.

Sangriento Infierno Lunar!¡.


« Última modificación: 20 Noviembre 2010, 09:20 am por BlackZeroX▓▓▒▒░░ » En línea

The Dark Shadow is my passion.
Psyke1
Wiki

Desconectado Desconectado

Mensajes: 1.089



Ver Perfil WWW
Re: [DUDA] Agregar Registro
« Respuesta #2 en: 20 Noviembre 2010, 16:21 pm »

.
Vhn puedes utilizar mi clase cCollectionEx.cls; te puede ser útil para comprobar elementos repetidos y demás... (si es que lo necesitas)
Black, creo que ahora te gano ::)

Añadir mi clase cCollectionEx.cls

Pego el codigo :
Código
  1. '=========================================================
  2. ' º Function : Abbreviate_Numeric_Array
  3. ' º Author   : Mr. Frog ©
  4. ' º Mail     : vbpsyke1@mixmail.com
  5. ' º Recommended Websites :
  6. '       http://blog.visual-coders.com.ar/
  7. '       http://InfrAngeluX.Sytes.Net/
  8. '=========================================================
  9. Option Explicit
  10. Option Base 0
  11.  
  12. Rem Añadir mi clase cCollectionEx.cls
  13.  
  14. Public Function Abbreviate_Numeric_Array(ByRef vNumberList() As Variant) As cCollectionEx
  15. If (Not vNumberList) = -1 Then Exit Function
  16. Dim cExTemp                                         As New cCollectionEx
  17. Dim lActualNumber                                   As Variant
  18. Dim lToTalNumbers                                   As Long
  19. Dim Q                                               As Long
  20. Dim W                                               As Long
  21.    lToTalNumbers = UBound(vNumberList())
  22.    If lToTalNumbers > 2 Then
  23.        Do While Q <= lToTalNumbers
  24.            lActualNumber = vNumberList(Q)
  25.            W = 0
  26.            If (Q < lToTalNumbers) Then
  27.                Do While (vNumberList(Q) + 1 = vNumberList(Q + 1)) Or _
  28.                         (vNumberList(Q) = vNumberList(Q + 1))
  29.                    Q = Q + 1
  30.                    W = W + 1
  31.                Loop
  32.            End If
  33.            With cExTemp
  34.                If W > 1 Then
  35.                    .Add lActualNumber & "~" & vNumberList(Q)
  36.                Else
  37.                    .Add lActualNumber
  38.                End If
  39.            End With
  40.            If Not (W = 1) Then Q = Q + 1
  41.        Loop
  42.        Set Abbreviate_Numeric_Array = cExTemp
  43.    End If
  44. End Function

Ejemplo:

Código
  1. Private Sub Form_Load()
  2. Dim Q                                   As Long
  3. Dim dArray()                            As Variant
  4. Dim sResult                             As String
  5.  
  6.    dArray() = Array(1, 2, 3, 4, 4, 5, 6, 7, 7, 7, 65, 345, 4545, 4546, 4547, 9999999, 9999999999#)
  7.  
  8.    With Abbreviate_Numeric_Array(dArray)
  9.        For Q = 1 To .Count
  10.            sResult = sResult & .Item(Q) & "|"
  11.        Next Q
  12.    End With
  13.  
  14.    Debug.Print sResult
  15. End Sub

Obtengo esto:
Citar
1~7|65|345|4545~4547|9999999|9999999999|


Vhn conectate al msn cuando puedas, tengo que hablar contigo... :-*

DoEvents! :P
.
« Última modificación: 21 Noviembre 2010, 00:41 am por Mr. Frog © » En línea

BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: [DUDA] Agregar Registro
« Respuesta #3 en: 20 Noviembre 2010, 18:05 pm »

.
Vhn puedes utilizar mi clase cCollectionEx.cls; te puede ser útil para comprobar elementos repetidos y demás... (si es que lo necesitas)
Black, creo que ahora te gano ::)


Mi codigo verifica elementos repetidos sin tu clase... ¬¬" que no te has fijado en eso?... ademas tiene la optativa de ordenar el arreglo. ¬¬", lo bueno te tu funcion es que hace corrovoracion de muchos a muchos con este problema, lo malo de la mia es que no lo hace asi, es decir esta secuencia  2,2,2,3,2,2

Corregido ahora si lo hacepta solo era agregar Or Lng_ResNumber& < 0 en:


Código
  1.  
  2. Public Function GetSimplificNumbers(ByRef ArrayOfNumbers() As Variant) As String()
  3. If (Not ArrayOfNumbers) = -1 Then Exit Function     '   //  Array entrante, inicializado?.
  4. Dim Lng_ArrayTmp$()                                 '   //  Colecci&#243;n de N&#250;meros Simplificados!&#161;.
  5. Dim Lng_Ini&, Lng_End&, Lng_Index&                  '   //  Variables para el Bucle.
  6. Dim Lng_AntPosNumber&                               '   //  Indice del Numero anterior (Numero del Array entrante).
  7. Dim Lng_ResNumber&                                  '   //  residuo de Lng_Index& - Lng_AntPosNumber&.
  8. Dim Lng_ArrayCount&                                 '   //  Contador de las dimensiones de Lng_ArrayTmp$.
  9. Dim Bool_Swith                  As Boolean          '   //  swith para saber si se debe simplificar!&#161;.
  10.  
  11.    'Call Start_QuickSort(ArrayOfNumbers(), AcendetOrder)    '   //  http://infrangelux.sytes.net/Blog/index.php?option=com_content&view=article&id=14:artquicksortybublesort&catid=2:catprocmanager&Itemid=8
  12.  
  13.    Lng_Ini = LBound(ArrayOfNumbers):   Lng_End = UBound(ArrayOfNumbers)
  14.    If Not isnumber(ArrayOfNumbers(Lng_Ini)) Then Exit Function
  15.    ReDim Lng_ArrayTmp$(Lng_ArrayCount&)
  16.    Lng_ArrayTmp$(Lng_ArrayCount&) = ArrayOfNumbers(Lng_Index&)
  17.  
  18.    For Lng_Index& = Lng_Ini + 1 To Lng_End
  19.        Lng_ResNumber& = ArrayOfNumbers(Lng_Index&) - ArrayOfNumbers(Lng_Index& - 1)
  20.        If Lng_ResNumber& > 1 Then
  21.  
  22.  





CitaGetSimplificNumbers

Código:

Solo es un simple algoritmo para simplificación de números en un array!¡.


la idea es ingresar números y qué los Simplifique, es decir 1,2,3,4,5,9,10,15,16,17,18,555,342,423,422 los ordena de la siguiente manera:

1~5,9,10,15~18,555,342,423,422

Código
  1.  
  2. Private Sub Form_Load()
  3. Dim arr()               As Variant
  4. Dim Element             As Variant
  5.    arr() = Array(1, 2, 2, 2, 3, 3, 3, 5, 5, 3, 3, 9, 10, 10, 10, 10, 11, 12, 12, 13, 15, 16, 17, 18, 555, 342, 423, 422, 415, 416, 417)
  6.    For Each Element In GetSimplificNumbers(arr())
  7.        Debug.Print Element
  8.    Next
  9. End Sub
  10.  
  11.  

Código
  1. '
  2. '   /////////////////////////////////////////////////////////////
  3. '   // Autor:   BlackZeroX ( Ortega Avila Miguel Angel )       //
  4. '   //                                                         //
  5. '   // Web:     http://InfrAngeluX.Sytes.Net/                  //
  6. '   //                                                         //
  7. '   //    |-> Pueden Distribuir Este C&#243;digo siempre y cuando   //
  8. '   // no se eliminen los cr&#233;ditos originales de este c&#243;digo   //
  9. '   // No importando qu&#233; sea modificado/editado o engrandecido //
  10. '   // o achicado, si es en base a este c&#243;digo                 //
  11. '   /////////////////////////////////////////////////////////////
  12. Option Explicit
  13.  
  14. Public Function GetSimplificNumbers(ByRef ArrayOfNumbers() As Variant) As String()
  15. If (Not ArrayOfNumbers) = -1 Then Exit Function     '   //  Array entrante, inicializado?.
  16. Dim Lng_ArrayTmp$()                                 '   //  Colecci&#243;n de N&#250;meros Simplificados!&#161;.
  17. Dim Lng_Ini&, Lng_End&, Lng_Index&                  '   //  Variables para el Bucle.
  18. Dim Lng_AntPosNumber&                               '   //  Indice del Numero anterior (Numero del Array entrante).
  19. Dim Lng_ResNumber&                                  '   //  residuo de Lng_Index& - Lng_AntPosNumber&.
  20. Dim Lng_ArrayCount&                                 '   //  Contador de las dimensiones de Lng_ArrayTmp$.
  21. Dim Bool_Swith                  As Boolean          '   //  swith para saber si se debe simplificar!&#161;.
  22.  
  23.    'Call Start_QuickSort(ArrayOfNumbers(), AcendetOrder)    '   //  http://infrangelux.sytes.net/Blog/index.php?option=com_content&view=article&id=14:artquicksortybublesort&catid=2:catprocmanager&Itemid=8
  24.  
  25.    Lng_Ini = LBound(ArrayOfNumbers):   Lng_End = UBound(ArrayOfNumbers)
  26.    If Not isnumber(ArrayOfNumbers(Lng_Ini)) Then Exit Function
  27.    ReDim Lng_ArrayTmp$(Lng_ArrayCount&)
  28.    Lng_ArrayTmp$(Lng_ArrayCount&) = ArrayOfNumbers(Lng_Index&)
  29.  
  30.    For Lng_Index& = Lng_Ini + 1 To Lng_End
  31.        Lng_ResNumber& = ArrayOfNumbers(Lng_Index&) - ArrayOfNumbers(Lng_Index& - 1)
  32.        If Lng_ResNumber& > 1 Or Lng_ResNumber& < 0 Then
  33.            If Bool_Swith Then
  34.                If Lng_AntPosNumber& > 2 Then
  35.                    Lng_ArrayTmp$(Lng_ArrayCount&) = Lng_ArrayTmp$(Lng_ArrayCount&) & "~" & ArrayOfNumbers(Lng_Index& - 1)
  36.                Else
  37.                    Lng_ArrayCount& = Lng_ArrayCount& + 1
  38.                    ReDim Preserve Lng_ArrayTmp$(Lng_ArrayCount&)
  39.                    Lng_ArrayTmp$(Lng_ArrayCount&) = ArrayOfNumbers(Lng_Index& - 1)
  40.                End If
  41.            End If
  42.            Lng_ArrayCount& = Lng_ArrayCount& + 1
  43.            ReDim Preserve Lng_ArrayTmp$(Lng_ArrayCount&)
  44.            Lng_ArrayTmp$(Lng_ArrayCount&) = ArrayOfNumbers(Lng_Index&)
  45.            Bool_Swith = False
  46.        ElseIf Lng_ResNumber& = 1 Then
  47.            If Not Bool_Swith Then Lng_AntPosNumber& = 0
  48.            Bool_Swith = True
  49.            If Lng_Index& = Lng_End Then
  50.                If Conversion.CBool(InStr(1, Lng_ArrayTmp$(Lng_ArrayCount& - 1), "~")) Then
  51.                    Lng_ArrayCount& = Lng_ArrayCount& + 1
  52.                    ReDim Preserve Lng_ArrayTmp$(Lng_ArrayCount&)
  53.                    Lng_ArrayTmp$(Lng_ArrayCount&) = ArrayOfNumbers(Lng_Index&)
  54.                Else
  55.                    Lng_ArrayTmp$(Lng_ArrayCount&) = Lng_ArrayTmp$(Lng_ArrayCount&) & "~" & ArrayOfNumbers(Lng_Index&)
  56.                End If
  57.            Else
  58.                Lng_AntPosNumber& = Lng_AntPosNumber& + 1
  59.            End If
  60.        ElseIf Lng_ResNumber& = 0 Then
  61.            If Lng_AntPosNumber& > 0 Then
  62.                Lng_AntPosNumber& = Lng_AntPosNumber& + 1
  63.            Else
  64.                Lng_AntPosNumber& = 0
  65.            End If
  66.        End If
  67.    Next
  68.    GetSimplificNumbers = Lng_ArrayTmp$
  69. End Function
  70.  
  71.  

Dulces Lunas!¡.
« Última modificación: 20 Noviembre 2010, 18:48 pm por BlackZeroX▓▓▒▒░░ » En línea

The Dark Shadow is my passion.
VanHan

Desconectado Desconectado

Mensajes: 41


.:: [ vHn ] ::.


Ver Perfil WWW
Re: [ACTUALIZADO] Agregar Registro
« Respuesta #4 en: 22 Noviembre 2010, 19:29 pm »

Gracias BlackZeroX▓▓▒▒░░  y Mr. Frog actualice el Post asi ven lo que intento hacer.

Salu2
[vHn]
« Última modificación: 22 Noviembre 2010, 19:47 pm por VanHan » En línea

.:: I'm GeeK ::.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines