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
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Casimiro Notevi Ver Mensaje
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
Pero, ¿en qué consiste el problema? Según entiendo, el error lo dal el motor de firebird y, sin embargo, el compañero bismark_sierra comentó al principio que la sentencia no le causa problemas si la ejecuta en el IBExpert. Da la impresión de que el contenido de qryConsulta.SQL.Text no es exactamente el mismo que el que llega al motor.

// Saludos
Responder Con Cita
  #2  
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
Por eso decía yo lo de utilizar ShowMessage, para ver como queda realmente la sentencia que se va a enviar al motor y de esta manera al menos yo suelo detectar caracteres indeseados o composición incorrecta del SQL.

Quizás utilizando parámetros y AsString en vez de QuotedSqr llegue a funcionar la sentencia,

Yo ejecutaría la sentencia solamente con la parte que se cree da el error y luego creo que con un par de ensayos se arreglaría el problema.

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
  #3  
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.055
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por roman Ver Mensaje
Pero, ¿en qué consiste el problema? Según entiendo, el error lo dal el motor de firebird y, sin embargo, el compañero bismark_sierra comentó al principio que la sentencia no le causa problemas si la ejecuta en el IBExpert. Da la impresión de que el contenido de qryConsulta.SQL.Text no es exactamente el mismo que el que llega al motor.
// Saludos
Claro, porque la sentencia que está usando en el ibexpert no es la que está generando en delphi.

Y el problema es ese, que las comillas de pulgadas está deformando la sentencia. Si se hace lo que comenta marcos se vería realmente la sentencia que se está creando. O deteniendo el programa con un breakpoint y mirando el contenido del query.sql.text, por supuesto.
Responder Con Cita
  #4  
Antiguo 16-06-2010
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Claro, porque la sentencia que está usando en el ibexpert no es la que está generando en delphi.
¿Cómo sabes esto? El compañero ya mencionó que

Cita:
Empezado por bismark_sierra
Gracias Marcos por tu comentario, la primera consulta que puse en el post, es como se arma antes de mandar llamar a ExecSQL.
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Y el problema es ese, que las comillas de pulgadas está deformando la sentencia.
¿De qué manera deforma la sentencia? Al menos en MySQL, una sentencia así es correcta ya que el valor completo del campo está encerrado entre comillas sencillas. Y si tal sintaxis no fuese correcta en Firebird entonces habría encontrado el problema desde el IBExpert.

// Saludos
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.055
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
El problema no es firebird, es delphi.

Si con el ibexpert, por ejemplo, ejecuto un:

Código SQL [-]
insert into tbArticulos values (2222,'rueda de 20" de diámetro')

Lo hace perfectamente. Pero si desde delphi vas componiendo la sentencia no lo hace bien, se confunde con las comillas. Puede que usando algo así lo haga bien:
Código:
'rueda de 20'#34' de diámetro'
O bien:
Código:
'rueda de 20'+#34+' de diámetro'
Responder Con Cita
  #6  
Antiguo 17-06-2010
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Pero si desde delphi vas componiendo la sentencia no lo hace bien, se confunde con las comillas.
No entiendo a qué te refieres con que se confunde con las comillas. ¿De qué modo se confunde?

Si yo pongo:

Código Delphi [-]
var
  sSentencia: String;

begin
  sSentencia := 'etiqueta = ' + QuotedStr(Edit1.Text);
  ShowMessage(sSentencia);
end;

donde Edit1 contiene el texto

rueda de 20" de diámetro

el ShowMessage muestra

'rueda de 20" de diámetro'

El compilador no se queja y la sentencia queda igual que como se pondría directamente en el IBExpert.

A lo que voy es que, al menos a mi, no me parece tan claro dónde radica el problema. No sé si los componentes en particular que use hacen algún tipo de escape de comillas al momento de enviar la consulta al servidor.

// Saludos
Responder Con Cita
  #7  
Antiguo 17-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
Yo creo que el problema viene del componente utilizado en este caso de las Ib que al encontrar las dobles comillas no las interpreta bien.

Por eso yo decía mostrar el SQL con un ShowMessage porque aunque pueda parecer evidente que lo escrito está bien al mostrarlo con el ShowMessage vemos lo que se le va a enviar al motor y a veces, doy fe no coincide.

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
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 04:25:31.


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