|
Responder ![]() |
Autor | |
jebcarlos ![]() Asiduo ![]() ![]() Unido: 16/Julio/2006 Localización: Colombia Estado: Sin conexión Puntos: 272 |
![]() Enviado: 17/Marzo/2023 a las 05:01 |
Buenas noches, revisando la página Mihura (http://www.accessaplicaciones.com/mysql.html), sobre como trabajar con MYSQL en el BackEnd, y mirando los videos de Juanjo, por cierto buenos maestros, me he querido adentrar en este mundo. Me cree una BD en MariaDB, con una tabla de pruebas la cual tiene este código: CREATE TABLE `bprueba` ( `consecutivo` INT(11) NOT NULL AUTO_INCREMENT, `txtTexto` INT(11) NOT NULL, `txtFecha0` DATE NULL DEFAULT NULL, `txtFecha1` DATE NULL DEFAULT NULL, `txtHora0` TIME NULL DEFAULT NULL, `txtNumero0` INT(11) NULL DEFAULT NULL, `txtNumero1` INT(11) NULL DEFAULT NULL, `txtversion` VARCHAR(50) NULL DEFAULT NULL COLLATE 'utf8mb4_spanish_ci', PRIMARY KEY (`consecutivo`) USING BTREE ) COLLATE='utf8mb4_spanish_ci' ENGINE=InnoDB AUTO_INCREMENT=21 ; Ahora bien la conecte mediante ADO gracias a MIHURA y a JUANJO, a un frontend con un formulario desconectado donde están los 8 campos, con la finalidad de aprender a INSERTAR información de los distintos tipos de datos, sin embargo me encuentro atascado para ingresar un valor NULL en el campo txtFecha0, ya que me salta el siguiente error. " Error -2147217913 ([ma-3.1.17][10.11.2-MariaDB]Incorrect date value: '' for column `intram`.`bprueba`.`txtFecha0` at row 1) in procedure btnSave_Click mdlConectaMYSQL " Sin embargo si en dicho campo tengo una fecha al insertar si me permite. Aquí dejo el código. hay varias lineas comentadas ya que son las distintas pruebas que he hecho primero para lograr insertar la fecha cuando no es NULL y lo que he intentado sin resultado cuando es NULL. Private Sub Comando20_Click() On Error GoTo ErrorHandler Select Case MsgBox("¿Está seguro que quiere añadir el registro?", vbYesNo Or vbQuestion, "Atención") Case vbYes If ConexionSQL1 = False Then Call MsgBox("Se ha perdido la conexión con el servidor.", vbExclamation, "Atención") Exit Sub End If 'SQL = "insert into bprueba (txtTexto, txtFecha0, txtFecha1, txtHora0 txtNumero0, txtNumero1, version) VALUES ('" & Me.Texto1 & "', '" & Nz(Me.Texto2, 0) & "', " & IIf(IsNull(Me.Texto3), Null, Date) & ", " & IIf(IsNull(Me.Texto4), Null, Time) & ", '" & Val(Me.Texto5) & "', '" & Val(Me.Texto6) & "', '" & Me.Texto7 & "')" ' SQL = "insert into bprueba (txtTexto, txtFecha0, txtFecha1, txtHora0 txtNumero0, txtNumero1, version) VALUES ('" & Me.Texto1 & "', '" & Nz(Me.Texto2, 0) & "', " & Nz(Me.Texto3, Null) & ", " & Nz(Me.Texto4, Null) & ", '" & Nz(Me.Texto5, Null) & "', '" & Nz(Me.Texto6, Null) & "', '" & Nz(Me.Texto7, "") & "')" ' SQL = "insert into bprueba (txtTexto, txtversion) VALUES (" & Me.Texto1 & ", '" & Me.Texto2 & "')" ' SQL = "insert into bprueba (txtTexto, txtFecha0) VALUES (" & Me.Texto1 & ", '" & Format(Me.Texto2, "yyyy/mm/dd") & "')" 'este si funciona' SQL = "insert into bprueba (txtTexto, txtFecha0) VALUES (" & Me.Texto1 & ", '" & Nz(Format(Me.Texto2, "yyyy/mm/dd"), Null) & "')" ' SQL = "insert into bprueba (txtTexto, txtFecha0) VALUES (" & Me.Texto1 & ", '" & Nz(Format(Me.Texto2, "yyyy/mm/dd"), " & 1900/01/01 & ") & "')" 'SQL = "insert into bprueba (txtTexto, txtFecha0) VALUES (1, '2023/03/14')" 'Debug.Print sql CnRemota.Execute SQL MsgBox "Registro añadido al servidor", vbOKOnly Or vbInformation, "INFORMACIÓN" Exit Sub Case vbNo End Select ExitProcedure: Err.Clear Exit Sub ErrorHandler: Select Case Err.Number Case 0 Case Else MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure " & "btnSave_Click" & " " & Application.VBE.ActiveCodePane.CodeModule.Name Resume ExitProcedure End Select End Sub De antemano muchas gracias por su colaboración
|
|
![]() |
|
Mihura ![]() Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador ![]() ![]() Unido: 06/Mayo/2005 Localización: En la dehesa Estado: Sin conexión Puntos: 13736 |
![]() |
Aiss ... fechas, nulos, ... ¡sólo hacen que dar problemas!, da igual el lenguaje o BD que uses
![]() Personalmente, si un campo es nulo no lo incluyo en la INSERT, y si lo tengo que poner le pongo el valor "" cosa que ya has hecho tú. Un saludo.
|
|
![]() |
|
jebcarlos ![]() Asiduo ![]() ![]() Unido: 16/Julio/2006 Localización: Colombia Estado: Sin conexión Puntos: 272 |
![]() |
Mihura gracias por contestar. Tengo dos problemas es que la tabla donde realmente voy a guardar la información en alguna ocasiones la fecha, el texto o los valores serán NULOS. En cuanto a las comillas "", el sistema no me permite ingresarlos por el error que coloque en el post inicial. y es este " Error -2147217913 ([ma-3.1.17][10.11.2-MariaDB]Incorrect date value:
'' for column `intram`.`bprueba`.`txtFecha0` at row 1) in procedure
btnSave_Click mdlConectaMYSQL " Lo intente colocando '0000-00-00', '1900/01/01' y nada de nada. NO se la verdad como logarlo
|
|
![]() |
|
Mihura ![]() Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador ![]() ![]() Unido: 06/Mayo/2005 Localización: En la dehesa Estado: Sin conexión Puntos: 13736 |
![]() |
No le des valor ... haz el INSERT sin ese campo.
|
|
![]() |
|
jebcarlos ![]() Asiduo ![]() ![]() Unido: 16/Julio/2006 Localización: Colombia Estado: Sin conexión Puntos: 272 |
![]() |
Perdona la ignorancia, pero es que alguna veces si necesito hacer el INSERT y en otras no, Y como se ejecuta desde un boton de comando no sabría como hacerlo
|
|
![]() |
|
Mihura ![]() Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador ![]() ![]() Unido: 06/Mayo/2005 Localización: En la dehesa Estado: Sin conexión Puntos: 13736 |
![]() |
Yo lo suelo hacer 'fuera' de la SQL, aunque se podría hacer dentro usando SiInm.
Así, en pseudocódigo: XSELECT = "": XVALUE = "" IF Fecha TieneValor then XSELECT = ", CampoFecha" XVALUE = ", ValorFechaDebidamenteFormateado" End IF SQL = "INSERT INTO Tabla (Campo1, Campo2" & XSELECT & ")" & _ " VALUES (Valor1, Valor2" & XVALUES & ")" |
|
![]() |
|
jebcarlos ![]() Asiduo ![]() ![]() Unido: 16/Julio/2006 Localización: Colombia Estado: Sin conexión Puntos: 272 |
![]() |
Listo voy a probar ya comentaré como me fue. Listo ya lo probé as{i y me funciona. Private Sub Comando20_Click() Dim txtLaFecha As String On Error GoTo ErrorHandler Select Case MsgBox("¿Está seguro que quiere añadir el registro?", vbYesNo Or vbQuestion, "Atención") Case vbYes If ConexionSQL1 = False Then Call MsgBox("Se ha perdido la conexión con el servidor.", vbExclamation, "Atención") Exit Sub End If txtLaFecha = IIf(IsNull(Me.Texto2), "1900/01/01", Me.Texto2) 'SQL = "insert into bprueba (txtTexto, txtFecha0, txtFecha1, txtHora0 txtNumero0, txtNumero1, version) VALUES ('" & Me.Texto1 & "', '" & Nz(Me.Texto2, 0) & "', " & IIf(IsNull(Me.Texto3), Null, Date) & ", " & IIf(IsNull(Me.Texto4), Null, Time) & ", '" & Val(Me.Texto5) & "', '" & Val(Me.Texto6) & "', '" & Me.Texto7 & "')" ' SQL = "insert into bprueba (txtTexto, txtFecha0, txtFecha1, txtHora0 txtNumero0, txtNumero1, version) VALUES ('" & Me.Texto1 & "', '" & Nz(Me.Texto2, 0) & "', " & Nz(Me.Texto3, Null) & ", " & Nz(Me.Texto4, Null) & ", '" & Nz(Me.Texto5, Null) & "', '" & Nz(Me.Texto6, Null) & "', '" & Nz(Me.Texto7, "") & "')" ' SQL = "insert into bprueba (txtTexto, txtversion) VALUES (" & Me.Texto1 & ", '" & Me.Texto2 & "')" SQL = "insert into bprueba (txtTexto, txtFecha0) VALUES (" & Me.Texto1 & ", '" & Format(txtLaFecha, "yyyy/mm/dd") & "')" 'este si funciona' ' SQL = "insert into bprueba (txtTexto, txtFecha0) VALUES (" & Me.Texto1 & ", '" & Nz(Format(Me.Texto2, "yyyy/mm/dd"), Null) & "')" ' SQL = "insert into bprueba (txtTexto, txtFecha0) VALUES (" & Me.Texto1 & ", '" & Nz(Format(Me.Texto2, "yyyy/mm/dd"), " & 1900/01/01 & ") & "')" 'SQL = "insert into bprueba (txtTexto, txtFecha0) VALUES (1, '2023/03/14')" 'Debug.Print sql CnRemota.Execute SQL MsgBox "Registro añadido al servidor", vbOKOnly Or vbInformation, "INFORMACIÓN" Exit Sub Case vbNo End Select ExitProcedure: Err.Clear Exit Sub ErrorHandler: Select Case Err.Number Case 0 Case Else MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure " & "btnSave_Click" & " " & Application.VBE.ActiveCodePane.CodeModule.Name Resume ExitProcedure End Select End Sub Como ud dijo por fuera de la SQL, ahora a seguir con los numéricos, y los textos, para luego ir al formulario verdadero donde tengo como 60 campos de todos los tipos a ver como lo implemento. Gracias MIhura. Se puede cerrar el hilo Editado por jebcarlos - 17/Marzo/2023 a las 19:09 |
|
![]() |
Responder ![]() |
|
Tweet
|
Ir al foro | Permisos de foro ![]() Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |