Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] error de sintaxis en insert odbc access

Estas en el tema de error de sintaxis en insert odbc access en el foro de PHP en Foros del Web. Saludos a todos, este es mi primer post. No es una contribución por lo menos hasta que con su ayuda la resuelva y espero que ...
  #1 (permalink)  
Antiguo 19/08/2014, 09:34
 
Fecha de Ingreso: mayo-2014
Ubicación: Zapopan, Jalisco
Mensajes: 11
Antigüedad: 5 años, 6 meses
Puntos: 0
Exclamación error de sintaxis en insert odbc access

Saludos a todos, este es mi primer post. No es una contribución por lo menos hasta que con su ayuda la resuelva y espero que sea pronto por que ya llevo dos días con esto no completos pero lo suficiente para quedar bien frustrado. Aclaro también que nunca habia tenido la experiencia de manejar una bd de access con php.

El asunto es que intento sacar los datos de una base de datos para pasarlos a otra, las tablas que intervienen en esto tienen la misma estructura, mismos tipos de datos y todo de hecho una es copia de la otra(la entera bd).

el primer paso que es sacar los datos de una se ejecuta sin problemas pero al momento de pasarlos a la otra me sale el siguiente error.

SQL error: [Microsoft][Controlador ODBC Microsoft Access] Error de sintaxis (falta operador) en la expresión de consulta ''FORMAT('2014-08-19','mm/dd/yyyy')''


Aquí el código

Código PHP:
while (odbc_fetch_row($rs) ) {
$i++;


     
$Ano        =    odbc_result($rs"Ano");
     
$N_Boleto    =    odbc_result($rs"N_Boleto");
     
$Emisor    =    odbc_result($rs"Emisor");
     
$Fecha     =    odbc_result($rs"Fecha");
     
$Hora         =     odbc_result($rs,"Hora");
     
$FechaD    =    substr(odbc_result($rs"FechaD"),0,10);
     
$HoraD        =    odbc_result($rs"HoraD");
     
$Genero    =    odbc_result($rs,"Genero");
     
$Placas    =    odbc_result($rs,"Placas");
     
$Pagado    =    odbc_result($rs,"Pagado");

$sqlInserta "INSERT INTO B_Entrante(Ano,N_Boleto,Emisor,Fecha,Hora,FechaD,HoraD,Genero,Placas,Pagado) values 
                ('$Ano','$N_Boleto','$Emisor','$Fecha','$Hora','FORMAT('$FechaD','mm/dd/yyyy')','$HoraD','$Genero','$Placas','$Pagado')"
;
                echo 
$sqlInserta."<br><br>";    

$stmt    odbc_prepare($conn2$sqlInserta);
$rs2 odbc_exec$stmt );
     
echo 
odbc_errormsg();


Esta cosa ya me tiene hasta la madre, igual y es un pequeño detalle el que tengo mal igual y no pero espero con su ayuda ya salir de esto.

Gracias de antemano!!
  #2 (permalink)  
Antiguo 19/08/2014, 09:47
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 11 años, 7 meses
Puntos: 326
Respuesta: error de sintaxis en insert odbc access

¿Has probado con:
Código PHP:
FORMAT(#$FechaD#,\"mm/dd/yyyy\") 
?
__________________
>> Eleazan's Source
>> @Eleazan
  #3 (permalink)  
Antiguo 19/08/2014, 10:00
 
Fecha de Ingreso: mayo-2014
Ubicación: Zapopan, Jalisco
Mensajes: 11
Antigüedad: 5 años, 6 meses
Puntos: 0
Respuesta: error de sintaxis en insert odbc access

ahora me sale esto dice error con el odbc_execute

Warning: Wrong parameter count for odbc_exec() in C:\xampp\xampp\htdocs\TrompoExpectra\processResult .php on line 49
INSERT INTO B_Entrante(Ano,N_Boleto,Emisor,Fecha,Hora,FechaD,H oraD,Genero,Placas,Pagado) values ('2014','1396053','1','20140819','726','FORMAT(#20 14-08-19 00:00:00#,"mm/dd/yyyy") ','1899-12-30 07:26:00','','','0')
  #4 (permalink)  
Antiguo 19/08/2014, 10:00
 
Fecha de Ingreso: agosto-2014
Mensajes: 10
Antigüedad: 5 años, 3 meses
Puntos: 2
Respuesta: error de sintaxis en insert odbc access

El FORMAT es una función de SQL, no la trates como un String a ver...
Código SQL:
Ver original
  1. ('$Ano','$N_Boleto','$Emisor','$Fecha','$Hora',FORMAT('$FechaD','MM/DD/YYYY'),'$HoraD','$Genero','$Placas','$Pagado')"
  #5 (permalink)  
Antiguo 19/08/2014, 10:03
 
Fecha de Ingreso: mayo-2014
Ubicación: Zapopan, Jalisco
Mensajes: 11
Antigüedad: 5 años, 6 meses
Puntos: 0
Respuesta: error de sintaxis en insert odbc access

ya la cambié como dijo Eleazan FORMAT(#$FechaD#,\"mm/dd/yyyy\"), ya me salta otro error.
  #6 (permalink)  
Antiguo 19/08/2014, 10:08
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 11 años, 7 meses
Puntos: 326
Respuesta: error de sintaxis en insert odbc access

Para utilizar obdc_exec, necesitas usar dos parametros...

Revisa la doc: http://es1.php.net/odbc_exec
__________________
>> Eleazan's Source
>> @Eleazan
  #7 (permalink)  
Antiguo 19/08/2014, 10:13
 
Fecha de Ingreso: agosto-2014
Mensajes: 10
Antigüedad: 5 años, 3 meses
Puntos: 2
Respuesta: error de sintaxis en insert odbc access

Es verdad, no vi el mensaje de Eleazan, se intuye que falta la conexión en la llamada.
Código PHP:
Ver original
  1. $rs2 = odbc_exec( $conn2, $stmt );
  #8 (permalink)  
Antiguo 19/08/2014, 11:49
 
Fecha de Ingreso: mayo-2014
Ubicación: Zapopan, Jalisco
Mensajes: 11
Antigüedad: 5 años, 6 meses
Puntos: 0
Respuesta: error de sintaxis en insert odbc access

Sigo moviendole a esto, ahora lo dejé así:

Código PHP:
while (odbc_fetch_row($rs) ) {
$i++;


     
$Ano        =    odbc_result($rs"Ano");
     
$N_Boleto    =    odbc_result($rs"N_Boleto");
     
$Emisor    =    odbc_result($rs"Emisor");
     
$Fecha     =    odbc_result($rs"Fecha");
     
$Hora         =     odbc_result($rs,"Hora");
     
$FechaD    =    odbc_result($rs"FechaD");
     
$HoraD        =    odbc_result($rs"HoraD");
     
$Genero    =    odbc_result($rs,"Genero");
     
$Placas    =    odbc_result($rs,"Placas");
     
$Pagado    =    odbc_result($rs,"Pagado");

$sqlInserta "INSERT into B_Entrante(Ano,N_Boleto,Emisor,Fecha,Hora,FechaD,HoraD,Genero,Placas,Pagado) values 
                ('$Ano','$N_Boleto','$Emisor','$Fecha','$Hora','FORMAT(#$FechaD#,\"mm/dd/yyyy\")','$HoraD','$Genero','$Placas','False')"
;
                echo 
$sqlInserta."<br><br>";    

//$stmt    = odbc_prepare($sqlInserta);
$r2odbc_exec($conn2,$sqlInserta);
     
echo 
odbc_errormsg($r2);

Me salta el siguiente Warning. Aclaro la bd no la hice yo no se tenga mucho que ver pero se supone que a excepción del campo FechaD todo está igual como viene del origen

Warning: odbc_exec() [function.odbc-exec]: SQL error: [Microsoft][Controlador ODBC Microsoft Access] No coinciden los tipos de datos en la expresión de criterios., SQL state 22005 in SQLExecDirect in C:\xampp\xampp\htdocs\TrompoExpectra\processResult .php on line 48
  #9 (permalink)  
Antiguo 19/08/2014, 17:04
 
Fecha de Ingreso: mayo-2014
Ubicación: Zapopan, Jalisco
Mensajes: 11
Antigüedad: 5 años, 6 meses
Puntos: 0
Sonrisa Respuesta: error de sintaxis en insert odbc access

parece ser que ya quedó voy saliendo del trabajo en cuanto llegue a casa expongo los puntos de la solución.


Saludos,
  #10 (permalink)  
Antiguo 19/08/2014, 19:23
 
Fecha de Ingreso: mayo-2014
Ubicación: Zapopan, Jalisco
Mensajes: 11
Antigüedad: 5 años, 6 meses
Puntos: 0
Respuesta: error de sintaxis en insert odbc access

al final así fue como funcionó todo, después de vueltas y vueltas logré identificar el error en tipos de datos y que se intentaban sobreescribir algunos registros, para lo cual también revisé la estructura de la bd por lo de la violación de index y primary keys.

Código PHP:
@$rs odbc_exec$conn$sql );
$i 0;
while (
odbc_fetch_row($rs) ) {
$i++;


     
$Ano        =    intval(odbc_result($rs"Ano"));
     
$N_Boleto    =    intval(odbc_result($rs"N_Boleto"));
     
$Emisor    =    intval(odbc_result($rs"Emisor"));
     
$Fecha     =    odbc_result($rs"Fecha");
     
$Hora         =     odbc_result($rs,"Hora");
     
$FechaD    =    odbc_result($rs"FechaD");
     
$HoraD        =    odbc_result($rs"HoraD");
     
$Genero    =    odbc_result($rs,"Genero");
     
$Placas    =    odbc_result($rs,"Placas");
     
$Pagado    =    odbc_result($rs,"Pagado");



$sqlInserta "INSERT into B_Entrante(Ano,N_Boleto,Emisor,Fecha,Hora,FechaD,HoraD,Genero,Placas,Pagado) values 
                ($Ano,$N_Boleto,$Emisor,$Fecha,$Hora,'$FechaD','$HoraD','$Genero','$Placas','$Pagado')"
;


        
odbc_exec($conn2,$sqlInserta);
     
//echo odbc_errormsg($r2);

puse algunos campos entre comillas y otros los traté con intval aunque de esto ultimo me quedó duda si era necesario, mañana probaré sin el.

Gracias a todos!!

Etiquetas: access, fecha, insert, odbc, sintaxis, sql, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:23.