Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-06-2010
bismarck_sierra bismarck_sierra is offline
Miembro
 
Registrado: ene 2004
Ubicación: Morelia, Michoacán, México
Posts: 70
Poder: 21
bismarck_sierra Va por buen camino
Error en sentencia con comillas dobles

Que tal

Tengo esta sentencia SQL que se ejecuta normal en cualquier cliente para firebird (IBOConsole, IBExpert), pero en mi aplicación me da un error "unexpected end of command"

Código SQL [-]
UPDATE articulos SET descripcion = 'ANGULO 2.8 MM X 1" LIGERO', 
descripcion_corta = 'ANGULO 2.8 MM X 1"', etiqueta = 'Angulo 2.8 mm x 1"', 
categoria = 2, departamento = null, clase = null, impuesto = 1, 
es_juego = 'N', costo_automatico = 'S', precio_automatico = 'N', 
se_vende = 'S', es_gasto = 'N', no_inventariable = 'N', agranel = 'S', 
bascula = 'N', tiempo_elaboracion = 0, tiene_numero_serie = 'N', 
tiene_lote = 'N', tiene_caducidad = 'N', generar_boletos = 'N', 
cambiar_precio = 'N', estatus = 'A', notas = '', fecha_ult_cambio = '06/12/2010 08:43:53', 
ultimo_costo = 86.77, tienda_en_linea = 'N', peso = 6, largo = 6, 
ancho = 0, alto = 0, fecha_importacion = '06/12/2010 08:44:29' WHERE clave = 37

Para armar esta sentencia utilizo QuotedStr(), y la anterior sentencia la tomé en tiempo de ejecución, es decir, así es como la manda a firebird.

El error me lo marca en el primer apostrofe de la fecha_ult_cambio

El problema lo da al poner las comillas dobles que van en las descripciones del producto, pero son datos del usuario, no se pueden quitar.

Utilizo Delphi 7 con dbexpress y firebird 2.1.2

¿Que podra ser?, ¿problemas de compatibilidad de dbexpress que trae Delphi 7?, ¿el juego de caracteres definido en la base de datos?

Gracias de antemano

Saludos
Bismarck
Responder Con Cita
  #2  
Antiguo 16-06-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Puedes poner el código en delphi?
Responder Con Cita
  #3  
Antiguo 16-06-2010
bismarck_sierra bismarck_sierra is offline
Miembro
 
Registrado: ene 2004
Ubicación: Morelia, Michoacán, México
Posts: 70
Poder: 21
bismarck_sierra Va por buen camino
Claro que si

Código Delphi [-]
        sSentencia:= 'UPDATE articulos SET descripcion = ' + QuotedStr(Datos.sDescripcion) +
                 ', descripcion_corta = ' + QuotedStr(Datos.sDescripcionCorta) +
                 ', etiqueta = ' + QuotedStr(Datos.sEtiqueta) +
                 ', categoria = ' + sClaveCategoria +
                 ', departamento = ' + sClaveDepto +
                 ', clase = ' + sClaveClase +
                 ', impuesto = ' + IntToStr(Datos.iClaveImpuesto) +
                 ', es_juego = ' + QuotedStr(Datos.sEsJuego) +
                 ', costo_automatico = ' + QuotedStr(Datos.sCostoAutomatico) +
                 ', precio_automatico = ' + QuotedStr(Datos.sPrecioAutomatico) +
                 ', se_vende = ' + QuotedStr(Datos.sSeVende) +
                 ', es_gasto = ' + QuotedStr(Datos.sEsGasto) +
                 ', no_inventariable = ' + QuotedStr(Datos.sNoInventariable) +
                 ', agranel = ' + QuotedStr(Datos.sAgraNel) +
                 ', bascula = ' + QuotedStr(Datos.sBascula) +
                 ', tiempo_elaboracion = ' + IntToStr(Datos.iTiempoElaboracion) +
                 ', tiene_numero_serie = ' + QuotedStr(Datos.sTieneNumeroSerie) +
                 ', tiene_lote = ' + QuotedStr(Datos.sTieneLote) +
                 ', tiene_caducidad = ' + QuotedStr(Datos.sTieneCaducidad) +
                 ', generar_boletos = ' + QuotedStr(Datos.sGenerarBoletos) +
                 ', cambiar_precio = ' + QuotedStr(Datos.sCambiarPrecio) +
                 ', estatus = ' + QuotedStr(Datos.sEstatus) +
                 ', notas = ' + QuotedStr(Datos.sNotas) +
                 ', fecha_ult_cambio = ' + QuotedStr(FormatDateTime(FECHA_HORA_DBMS, dteFechaMov)) +
                 ', ultimo_costo = ' + FloatToStr(Datos.rCosto) +
                 ', tienda_en_linea = ' + QuotedStr(Datos.sTiendaEnLinea) +
                 ', peso = ' + FloatToStr(Datos.rPeso) +
                 ', largo = ' + FloatToStr(Datos.rLargo) +
                 ', ancho = ' + FloatToStr(Datos.rAncho) +
                 ', alto = ' + FloatToStr(Datos.rAlto) +
                 ', fecha_importacion = ' + QuotedStr(sFechaImporta) +
                 ' WHERE clave = ' + IntToStr(Datos.iClave);

qryConsulta:= TSQLQuery.Create(nil);
qryConsulta.SQLConnection:= FBaseDato;
qryConsulta.SQL.Clear;
qryConsulta.SQL.Text:= sSentencia;
qryConsulta.ExecSQL;

Como no le he econtrado por donde es el error intenté cambiar la asignación de la sentencia a qryConsulta con los metodos qryConsulta.Add, qryConsulta.Append

Saludos
Bismarck
Responder Con Cita
  #4  
Antiguo 16-06-2010
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
También puedes probar a poner justo antes de ejectur la consulta:

Código Delphi [-]
ShowMessage(qryConsulta.SQL.Text);

De esta manera verás si te construye la sentencia SQL como tu esperas o ya de hecho encuentras algún fallo.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #5  
Antiguo 16-06-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
A simple vista no se ve nada mal, se supone que ese campo es del tipo timestamp, no?
Responder Con Cita
  #6  
Antiguo 16-06-2010
bismarck_sierra bismarck_sierra is offline
Miembro
 
Registrado: ene 2004
Ubicación: Morelia, Michoacán, México
Posts: 70
Poder: 21
bismarck_sierra Va por buen camino
Gracias Marcos por tu comentario, la primera consulta que puse en el post, es como se arma antes de mandar llamar a ExecSQL.

Las pruebas que he realizado obtengo resultados extraños, si agrego una comillas dobles dentro del valor de otro campo, por ejemplo:

Código Delphi [-]
, notas = '2.8 1" '

funciona bien, es decir, descripcion, descripcion_corta, etiqueta y notas tienen una comilla doble, no importa en que campos tenga comillas dobles en pares, todo marcha bien, pero si acumulo "comillas dobles" acumulando un número impar en diferentes campos ya no funciona.

Nunca me habia pasado eso, trataré con otras cosas, tal vez sea porque compilo Delphi 7 en Windows 7, probaré con Windows XP.

Saludos

Bismarck
Responder Con Cita
  #7  
Antiguo 16-06-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Con la explicación que has dado ahora me ha resultado más fácil, el problema es este:
'ANGULO 2.8 MM X 1" LIGERO',

las comillas de las pulgadas
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Cambiar comillas dobles por dos simples Besto Varios 6 08-01-2009 16:44:47
tablas y campos en minusculas firebird con dialecto 3 las pone entre comillas dobles juniorSoft Firebird e Interbase 2 03-11-2008 20:50:28
Error con sentencia SQL Coco_jac SQL 7 28-11-2005 21:00:52
error de sentencia if , else Epunamun Conexión con bases de datos 8 29-07-2005 13:23:24
Tengo un error de sentencia please Epunamun Conexión con bases de datos 2 29-07-2005 02:05:24


La franja horaria es GMT +2. Ahora son las 20:40:28.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi