| 
	
		|  Autor | Tema: Autoenumerar desde ultimo valor [Base de datos]  (Leído 3,166 veces) |  
	| 
			| 
					
						| suarex 
								
								 Desconectado 
								Mensajes: 7
								
								
								
								
								
								   | 
 
Buenos dias    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 Option ExplicitDim 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 | 
 
antes de guardar, haces esta consulta: 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 | 
 
 |  |  |  | 
			| 
					
						| suarex 
								
								 Desconectado 
								Mensajes: 7
								
								
								
								
								
								   | 
 
Gracias por responder.antes de guardar, haces esta consulta: SELECT MAX(codigo)+1 AS nuevoCodigo FROM BDCancionero
 guarda el valor de "nuevoCodigo" en una variable e inserta esa misma en el codigo. saludos. He hecho estas 3 modificaciones. Pero me dice que no coinciden los tipos, me extraña porque las almaceno como un  Dim Integer. 'DeclaracionesDim nuevocodigo As Integer
 
 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 am por suarex » |  En línea | 
 
 |  |  |  | 
			| 
					
						| seba123neo | 
 
es que asi no va a funcionar, esto: 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 | 
 
 |  |  |  | 
			| 
					
						| suarex 
								
								 Desconectado 
								Mensajes: 7
								
								
								
								
								
								   | 
 
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 'DeclaracionesDim nuevoCodigo As ADODB.Recordset
nuevoCodigo.Open = "SELECT MAX (codigo)+1 AS nuevoCodigo FROM BDCancionero"Aun asi me dice que esperaba una funcion o una variable. |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  |  |  |  |  
 
	
 
 
				
					
						| Mensajes similares |  
						|  | Asunto | Iniciado por | Respuestas | Vistas | Último mensaje |  
						|   |   | ¿Como almacenar datos desde WEB a una base de datos? PHP
 | Clavo Oxidado | 4 | 3,678 |  14 Junio 2007, 21:14 pm por newinl
 |  
						|   |   | Consultar un valor de una base de datos en un txtbox Programación Visual Basic
 | MandingoPC | 0 | 1,734 |  27 Abril 2012, 15:42 pm por MandingoPC
 |  
						|   |   | Descargas en las redes gubernamentales: desde pornografía al último Windows 8 Noticias
 | wolfbcn | 0 | 1,881 |  7 Mayo 2013, 14:40 pm por wolfbcn
 |  
						|   |   | Ayuda p listar datos de base de datos y usar el valor para enviar a otra pagina PHP
 | daciocco | 1 | 3,505 |  31 Diciembre 2013, 16:26 pm por #!drvy
 |  
						|   |   | Utilizar el valor de la base de datos para mandar un icono a una tabla PHP
 | Guillermo-Mireles-G | 5 | 3,476 |  1 Junio 2018, 21:11 pm por apuromafo CLS
 |    |