Inicio > MySQL > radm > Instruccion SQL en ACCESS errónea

Instruccion SQL en ACCESS errónea

Experto:
Usuario:
Fecha: 07/11/2009
Valoración: (4,00 sobre 5) Categoría: MySQL
05/11/2009
mrair, usuario preguntando en MySQL
Usuario
Hola mi caso es el siguiente y no se como darle solución.
Tengo una base de datos en access. En ella tengo las siguientes tablas:
- personas con sus datos personales
- cursos con los datos del curso
A través de un formulario elijo a la persona, el curso que quiere realizar
y con un botón que tiene instrucciones en vba y sql la persona con sus datos y los datos
del curso elegido se agregan a una tabla vacia como un registro nuevo.
La instruccion que uso para agregar las personas es:
DoCmd.RunSQL "INSERT INTO CAJA(TipoEntrada,Cliente,Concepto,Fecha,ModoPago,Descuento,Importe,TipoPagoV,TipoHabitacionV,Modulos,Domicilio,Poblacion,CodigoPostal,Provincia,Tlf1,Tlf2,EMail,FechaInicio,Aula,Profesor,MaximoPax,DiasGrupo,HorarioGrupo,PrecioGrupoOriginal,DuracionGrupo,Notas,NI)VALUES('Matricula','" & Cliente.Column(1) & " " & "," & " " & Cliente.Column(2) & "','" & Concepto & "','" & Fecha & "','" & ModoPago & "','" & Descuento & "','" & TxtBox & "','" & TPV.Column(1) & "','" & THV.Column(1) & "','" & Modulos.Column(1) & "','" & Cliente.Column(4) & "','" & Cliente.Column(5) & "','" & Cliente.Column(6) & "','" & Cliente.Column(7) & "','" & Cliente.Column(8) & "','" & Cliente.Column(9) & "','" & Cliente.Column(10) & "','" & Concepto.Column(3) & "','" & Concepto.Column(4) & "','" & Concepto.Column(5) & "','" & Concepto.Column(6) & "','" & Concepto.Column(7) & "','" & Concepto.Column(8) & "','" & Concepto.Column(9) & "','" & Concepto.Column(10) & "','" & N & "','" & NI & "')"
Logicamente la instruccion es larga pero TODO FUNCIONA PERFECTAMENTE excepto en una situación Y NO SE COMO RESOLVERLO
Cuando en mi tabla de personas tengo dos personas con los mismos apellidos (hermanos), al elegir un curso y agregarlas a la tabla vacía se agrega LA PRIMERA DE LAS DOS en la tabla de personas
y NO la que he elegido en el formulario.
No quiero rehacer la base de datos con relaciones, simplemente quiero saber cómo puedo modificar la instruccion en SQL
que he hecho para que se agrege la que elijo y NO la primera que hay en la tabla de personas en este caso.
Agradeciendo su contestación muchas gracias y un saludo
Rubén
07/11/2009
mrair, experto respondiendo en MySQL
Experto
Hoooola, muy buenas!
Dandote las gracias por tu dirección hacia mi, bueno...
En cuanto a la instrucción SQL que me has apuntado, la verdad, está perfecta, no tiene porqué darte fallos (la instrucción SQL EN SI me refiero...)...
... Ahora, en cuanto al problema que me cuentas, puedo decirte que NO TIENE QUE VER con la instrucción que me has detallado:
En la instrucción, aparecen comandos como Cliente.column(1), Cliente.column(2), Concepto.column(1)...
Yo ahí (y desde mi laaaaaaaaaarga experiencia trabajando y ..."trasteando"... con bases de datos en Access, haciendo yo mis programas y truquillos con los formularios y el código VBA... por la presencia de dichos comandos en la instrucción SQL, puedo entender que, en el formulario desde el que aplicas la instrucción para insertar el registro, existen, o bien tablas, o bien listas o bien ..."desplegables"..., mediante los que seleccionas al cliente (Cliente.column(1)...), el concepto (Concepto.column(1)...), el TPV (TPV.column(1)...) etc...
Pues bien. Supongo, también, que para cada uno de esos controles (tablas, "desplegable"s...) utilizarás consultas ("SELECT Id, Apellidos, Nombre, DNI... FROM Clientes ...."...). Y tal vez, pase que en la consulta correspondiente al control Cliente es donde se encuentre el fallo en cuestión. Me explico:
Es posible que, p.ej. en la consulta que hayas utilizado para el control clientes, hayas puesto algo como
"SELECT Id, Apellidos, Nombre, .... FROM Clientes ................... ORDER BY Apellidos"
La solución, en este caso sería poner: "................... ORDER BY Apellidos, Nombre"
No obstante, una solución mas ..."limpia"... sería que en la tabla clientes hubiese un campo clave (llamado Id, p.ej...), que fuese irrepetible, y que p.ej. fuese "autonumérico"... Y que al hacer la consulta, cada cliente lo referenciases por ese Id (y no, por sus apellidos...)
Pero bueno... No se si te servirá,
Aquí te mando saludos,
Emmmmmpuack!
07/11/2009
mrair, usuario preguntando en MySQL
Usuario
muchas gracias, le explicación genial!!!
Enlaces patrocinados