elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
28 Mayo 2012, 23:43  


Tema destacado: Deseas probar algunas mejoras a la interfaz del foro? Prueba cake! acerca de

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo, raul338)
| | |-+  Autoenumerar desde ultimo valor [Base de datos]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Autoenumerar desde ultimo valor [Base de datos]  (Leído 555 veces)
suarex

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Autoenumerar desde ultimo valor [Base de datos]
« en: 19 Mayo 2011, 03:10 »

Buenos dias  ;D

Tengo un problema, miren tengo un programa que se encarga de agregar los directorios de los archivos a una base de datos. lo hago seleccionando un directorio con un dirlistbox. El agrega en la base de datos los siguiente campos: codigo, nombre, ruta, tipo. El campo codigo cuenta cuantos archivos hay en la base de datos, pero el problema es que luego de agregar. cuando vuelvo a agregar mas archivos en la base de datos me da un error que no me permite duplicados. (obviamente yo lo bloque porque no quiero duplicados) quisiera saber como puedo obtener el ultimo valor del campo codigo e ir sumando desde alli. CODIGO ES UN NUMERO


Código:
Option Explicit
Dim rs As ADODB.Recordset
Dim db As ADODB.Connection




Private Sub Command1_Click()
    Set db = New ADODB.Connection
    Set rs = New ADODB.Recordset
   
    With db
 .Provider = "Microsoft.jet.oledb.4.0" '(Access 2000)
 .ConnectionString = "datos.mdb"
 .Open
End With


'Aki tomo el index de k.
Dim k As Long
Dim archivo() As String
Dim Modificar As String
Screen.MousePointer = 11
For k = 0 To Text1.ListCount - 1
    If InStr(Text1.List(k), "'") Then
        Modificar = Modificar & "Original: " & Text1.List(k) & (Chr(13) & Chr(10))
        Text1.List(k) = Replace(Text1.List(k), "'", "")
        Modificar = Modificar & " Final: " & Text1.List(k) & (Chr(13) & Chr(10))
    End If
    archivo = Split(Text1.List(k), "\", -1, vbTextCompare)
    Call Grabar_BDCancionero(k + 1, Mid(archivo(4), 1, Len(archivo(4)) - 4), Text1.List(k), 0, Right(archivo(4), 4))
Next k

Screen.MousePointer = 0
MsgBox "Se ha actualizado la base de canciones", vbInformation
MsgBox "Modificaciones Pendientes " & (Chr(13) & Chr(10)) & Modificar
'Set rs = db.Execute("select top 10 * from BDCancionero")
Command1.Visible = False
Command2.Visible = True
End Sub

Private Sub Command2_Click()
'recorremos todos los archivos de musica y guardamos cada uno en la DB.
Dim Carpeta_Genero As Long
Dim Carpeta_Artista As Long
Dim i As Integer
Dim j As Integer
Dim k As Integer
Text1.Clear
Carpeta_Genero = Dir1.ListCount
For i = 0 To Dir1.ListCount - 1
    Dir2 = Dir1.List(i)
    For j = 0 To Dir2.ListCount - 1
        'Dir1 = Dir1.List(i)
        'If i = 0 Then
        '    Dir2.Path = Dir1.List(i)
        'Else
        '    Dir2.Path = Dir1
        '    Dir1 = Dir1.List(-2)
        'End If
        File1 = Dir2.List(j)
        For k = 0 To File1.ListCount - 1
            File1.ListIndex = k
            Text1.AddItem (File1.Path & "\" & File1.FileName)
        Next k
    Next j
Next i
Label2.Caption = Text1.ListCount
End Sub

Public Function Grabar_BDCancionero(Codigo As Long, Nombre As String, Ruta As String, Cantidad As Integer, Tipo As String)
    Dim sSql As String
   
   
    sSql = "INSERT INTO BDCancionero VALUES("
    sSql = sSql & Codigo & ", '" & Nombre & "', '" & Ruta & "', " & Cantidad & ", '" & Tipo & "')"
   
    Set rs = db.Execute(sSql)
   
End Function
Private Sub Dir1_Change()
    Dir1.Path = Dir1
End Sub

Private Sub Dir2_Change()
    File1.Path = Dir2.Path
End Sub

Private Sub Drive1_Change()
    Dir1.Path = Drive1.Drive
End Sub

Private Sub Form_Load()
    File1.Pattern = "*.mpg;*.wmv;*.avi;*.mp4;*.m2v;*.vob;*.mov;*.asf;*.mp3;*.mp2;*.swa;*.wma;*.wav;*.mid;*.ogg;*.mkv;*.mpa;*.ac3;*.aac;*.kar;*.flv"
End Sub

Private Sub Image1_Click()
End
End Sub



En línea
seba123neo
Moderador
***
Desconectado Desconectado

Mensajes: 3.214



Ver Perfil WWW
Re: Autoenumerar desde ultimo valor [Base de datos]
« Respuesta #1 en: 19 Mayo 2011, 03:58 »

antes de guardar, haces esta consulta:

Código
SELECT MAX(codigo)+1 AS nuevoCodigo FROM BDCancionero

guarda el valor de "nuevoCodigo" en una variable e inserta esa misma en el codigo.

saludos.


En línea

Mucha gente, especialmente la ignorante desea castigarte por decir la verdad, por ser correcto, por ser tú. Nunca te disculpes por ser correcto, o por estar años delante de tu tiempo.
Si estas en lo cierto, y lo sabes, que hable tu razón. Incluso si eres una minoria de uno solo, la verdad sigue siendo la verdad. M. Gandhi
suarex

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: Autoenumerar desde ultimo valor [Base de datos]
« Respuesta #2 en: 19 Mayo 2011, 04:30 »

antes de guardar, haces esta consulta:

Código
SELECT MAX(codigo)+1 AS nuevoCodigo FROM BDCancionero

guarda el valor de "nuevoCodigo" en una variable e inserta esa misma en el codigo.

saludos.
Gracias por responder.
He hecho estas 3 modificaciones. Pero me dice que no coinciden los tipos, me extraña porque las almaceno como un  Dim Integer.


Citar
'Declaraciones
Dim nuevocodigo As Integer
Citar
Private Sub Command1_Click()

 Set db = New ADODB.Connection
    Set rs = New ADODB.Recordset
    
    With db
 .Provider = "Microsoft.jet.oledb.4.0" '(Access 2000)
 .ConnectionString = "datos.mdb"
 .Open
End With

Set db = "SELECT MAX (codigo)+1 AS nuevoCodigo FROM BDCancionero"

'Aki tomo el index de k.
Dim k As Long
Dim archivo() As String
Dim Modificar As String
Screen.MousePointer = 11
For k = 0 To Text1.ListCount - 1
    If InStr(Text1.List(k), "'") Then
        Modificar = Modificar & "Original: " & Text1.List(k) & (Chr(13) & Chr(10))
        Text1.List(k) = Replace(Text1.List(k), "'", "")
        Modificar = Modificar & " Final: " & Text1.List(k) & (Chr(13) & Chr(10))
    End If
    archivo = Split(Text1.List(k), "\", -1, vbTextCompare)
    Call Grabar_BDCancionero(nuevocodigo + 1, Mid(archivo(4), 1, Len(archivo(4)) - 4), Text1.List(k), 0, Right(archivo(4), 4))
Next k

Screen.MousePointer = 0
MsgBox "Se ha actualizado la base de canciones", vbInformation
MsgBox "Modificaciones Pendientes " & (Chr(13) & Chr(10)) & Modificar
'Set rs = db.Execute("select top 10 * from BDCancionero")
End Sub
« Última modificación: 19 Mayo 2011, 04:41 por suarex » En línea
seba123neo
Moderador
***
Desconectado Desconectado

Mensajes: 3.214



Ver Perfil WWW
Re: Autoenumerar desde ultimo valor [Base de datos]
« Respuesta #3 en: 19 Mayo 2011, 05:02 »

es que asi no va a funcionar, esto:
Citar
Set db = "SELECT MAX (codigo)+1 AS nuevoCodigo FROM BDCancionero"

ahi no se que haces, estas asignando la variable de la conexion de la base de datos a un string...eso no va.

la consulta que te pase debes pasarsela a la propiedad .Open de un recordset..y asi obtenes el codigo.

saludos.
En línea

Mucha gente, especialmente la ignorante desea castigarte por decir la verdad, por ser correcto, por ser tú. Nunca te disculpes por ser correcto, o por estar años delante de tu tiempo.
Si estas en lo cierto, y lo sabes, que hable tu razón. Incluso si eres una minoria de uno solo, la verdad sigue siendo la verdad. M. Gandhi
suarex

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: Autoenumerar desde ultimo valor [Base de datos]
« Respuesta #4 en: 19 Mayo 2011, 05:19 »

es que asi no va a funcionar, esto:
ahi no se que haces, estas asignando la variable de la conexion de la base de datos a un string...eso no va.

la consulta que te pase debes pasarsela a la propiedad .Open de un recordset..y asi obtenes el codigo.

saludos.

 >:( es cierto

Código:
'Declaraciones
Dim nuevoCodigo As ADODB.Recordset

Código:
nuevoCodigo.Open = "SELECT MAX (codigo)+1 AS nuevoCodigo FROM BDCancionero"

Aun asi me dice que esperaba una funcion o una variable.
En línea
seba123neo
Moderador
***
Desconectado Desconectado

Mensajes: 3.214



Ver Perfil WWW
Re: Autoenumerar desde ultimo valor [Base de datos]
« Respuesta #5 en: 19 Mayo 2011, 05:28 »

es que no se usa asi, tenes que leer un manual de ADO antes de ponerte a hacer esto.

aca tenes un ejemplo simple..pero hay mas busca.

Conectar a una base de datos de SQL Server con VB6
En línea

Mucha gente, especialmente la ignorante desea castigarte por decir la verdad, por ser correcto, por ser tú. Nunca te disculpes por ser correcto, o por estar años delante de tu tiempo.
Si estas en lo cierto, y lo sabes, que hable tu razón. Incluso si eres una minoria de uno solo, la verdad sigue siendo la verdad. M. Gandhi
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Abrir una base de datos desde una web...
Desarrollo Web
Maka_oju 5 703 Último mensaje 7 Julio 2005, 17:55
por Azielito
Enlace desde Base de datos
Desarrollo Web
albert_1976 3 320 Último mensaje 15 Julio 2005, 00:01
por <Samu>
Conexion a base de datos desde dreamweaver mx
Desarrollo Web
Dannysoft 0 224 Último mensaje 14 Septiembre 2005, 04:55
por Dannysoft
¿Como almacenar datos desde WEB a una base de datos?
PHP
Polanski 4 706 Último mensaje 14 Junio 2007, 21:14
por newinl
Consultar un valor de una base de datos en un txtbox
Programación Visual Basic
MandingoPC 0 138 Último mensaje 27 Abril 2012, 15:42
por MandingoPC
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines