Visual Basic Foro
Programación => Bases de Datos => Mensaje iniciado por: fernandos85al@hotmail.com en Febrero 16, 2011, 05:48:56 pm
-
Hola gente, tengo un programita, en el cual voy agregando alumnos, con sus datos a una base de access, uso sql.
Dim cnn as adodb.connection
Dim rs as adodb.recordset
Private sub form1_load()
Set Cnn = New ADODB.Connection
Cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\ARCHIV~1\COLEGIO\BASE\COLEGIO.MDB;Persist Security Info=False; Jet OLEDB:Database Password = COLEGIO"
Cnn.Open
Set rs = New ADODB.Recordset
'Al iniciar el formulario realiza una consulta para averiguar el ultimo IdAlumno cargado
UltimoIdAlumnos="Select Max (IdAlumnos) from datos"
txtIdAlumnos.text =rs(0) 'Cuadro de text que contiene y muestra el Ultimo IdAlumno
End sub
Puedo cargar alumnos con sus datos, pero para ingresar uno nuevo, antes obtengo el Id anterior y le sumo 1. Ejemplo: Si el ultimo IdAlumno era 10, le sumo 1 y me queda en 11.
El problema que le encontre, despues de varios intentos excitosos, jeje, es que ahora parece que solo me reconoce como ultimo Id al 9, no puedo cargar mas del 9 al iniciar el formulario, con lo cual, al existir ese ID, no me deja agregar un nuevo alumno.
Lo hice de esta manera, ya que en otra tabla aparte, ingreso los Ids, notas y otros datos, y las vinculo mediante Inner join, lo cual me ha traido muchos dolores de cabeza( si el Id es autonumerico en la tabla)..
y otra duda..
siguendo con el ejemplo anterior..
quiero imprimir por ejemplo la libreta de calificaciones del alumno, juan, perez, DNI:26.XXX.XXX, vinculo las tablas necesarias, o simplemente con alguna tabla determinada..
una vez que tengo todos los datos de las consultas, configuro una hoja, por ejemplo A4, MARGENES, ETC..
Y USO EL OBJETO PRINTER JUNTO A LINE
PRINTER.LINE (200,120)-(0,250)
LO QUE ESTUVE TRATANDO DE HACER ES UNA ESPECIE DE GRILLA, O TABLA AL ESTILO DE WORD, QUIERO QUE SALGA EN PAPEL.. UNA SOLA VEZ ME RESULTO TODO BIEN, DESPUES LA IMPRESORA COMENZO A LARGAR CIENTOS DE HOJAS EN BLANCO..
ESTA LOCA.. O YO SOY EL BRUTO, JEJE..
EN FIN ESO SOLO ES LO QUE ME TRAE PENSANDO
MIL GRACIAS ANTICIPAS, ESTOY TERMINANDO ALGUNOS APORTES PARA ESTE FORO, QUE DENTRO DE POCO, SI DIOS QUIERE Y SI SE PUEDE DEJO PARA COMPARTIRLES, PARA DEVOLVER ALGO DE LO QUE OBTENGO DEL FORO Y SU GENTE!!!!
SALUDOS
-
¿Para que obtienes el id anterior y le sumas 1? Deja que esa chamba la haga el motor. Ya que trabajas con Access pon tu campo Id en autonumerico.
Sobre la impresion, ya que usas el objeto Printer mejor postea tu codigo o zipealo para descargarlo y probarlo y darte la fija.
-
MIL GRACIAS QUE RAPIDEZ!!! HAGO UN INTENTO MAS, SI ME SIGUE CON LO MISMO DEJO EL CODIGO PARA VER SI HAY SOLUCION, JEJE..
VOY A VOLVER A DEJAR EN AUTONUMERICO, COMO DICES, ES LA MEJOR OPCION Y ME EVITO ESCRIBIR CODIGO ;D,
MIL GRACIAS YVANB
SALUDOS
-
yo tuve el mismo problema y opte por lo siguiente (creo que ya lo explique en otro post) hago una tabla contador y un campo cualquiera con formato numero entero y solo digo que valla a buscar el campo que le sume 1 y que lo guarde!!!!! talvez te ayuda
-
Wolf, lo mejor es dejar que la BD en la tabla use su Indice Autonumerico y ya...! El solo se encarga de enviar la información correspondiente al resto de los campos..! Más nada..!