Error de sintaxis armando dw dinámico
Tengo esta linea de código pero no se si es la que esta mostrando el error de sintaxis me dice que en la columna 584... No entiendo... De todas maneras creo que por acá esta el error... No se si esta mal concatenado o no es de ahí... Gracias
string tipo5
tipo5 = ddlb_1.text
if len(tipo5) >0 and tipo5 <> 'none' then
c_where = c_where +" and a.tipo_documento = '" +string (tipo5)+ "'"
end if
1 Respuesta
Estimada, podrías mostrar el texto del error que te genera.
Por otro lado podrías intentar dar un espacio al final de la linea que concatena, algo así:
c_where = c_where +" and a.tipo_documento = '" +string (tipo5)+ "' "
Ya probé con el espacio y nada...mira este es el error
Modify Failed Line 1 Column 584:incorrect sintax.
gracias por tu ayuda
¿En qué momento te sale este error?
Cuando asignas el query al dw, en el retrieve.?
Aparte de eso. Puedes ver el query generado por medio de un messagebox. Y revisar si el query esta bien construido.
ya lo tengo visto por un mensaje...
el error aparece antes del retrieve cuando se asigna el query mas bien
Mmm.. intenta meter ese query, de manera manual, a un dw.
Osea, en tiempo de diseño, crea un dw, y en el painter, métele todo el query y dime que observas.
El texto del messagebox lo puedes capturar haciendo control + c, cuando tengas el messagebox en primer plano, pasalo a un txt y quítale la parte del titulo y el botón, te darás cuenta.
Me comentas.
Estimada, en tu query, ¿estas modificando (añadiendo/qutando) columnas o argumentos del dw a comparación de su estado original?
Consulta, en la practica, en mi trabajo para ser especifico.
He visto el uso de la función setsqlselect() en los dw.
Estos dw, no manejaban argumentos. Mas si se respetaba las columnas del select original del dw. Pero se modificaba en modo de ejecución la clausula where. Se añadían mas criterios, y esto no es lo mismo que decir que se añadían argumentos.
¿Este también es tu caso?
Ya te respondo mira que estuve revisando y averiguando y me dijeron que por medio de "escape de caracteres especiales" puedo hacer eso...tu sabes como hacerlo?
no se sobre el equivalente, pero pues si hablamos de lo mismo....no se como adherirlo a mi consulta en este caso iría en esta parte del query
string tipo5
tipo5 = ddlb_1.text
if len(tipo5) >0 and tipo5 <> 'none' then
c_where = c_where +" and a.tipo_documento ='" +string (tipo5)+"'"
end if
Tengo que aplicar ese símbolo a la variable pero no se como le he intentado de varias formas y no me sale
Y si me serviría esa opción ya que me dijeron que es la variable del tipo de documento la que genera problema...ya que al armar todo el select este comienza y termina con comilla sencilla y la variable del tipo documento tambien tiene comilla sencilla...me dicen que ese es el error ...que entonces se confunde todo
'select 0 as clave, a.tipo_documento tipo_documento, a.documento documento, a.autorización autorización, a.fecha fecha, a.codigo_consulta codigo_consulta, a.posfechado posfechado, a.valor_garantizado valor_garantizado, a.pago pago, a.numero_cheques numero_cheques, a.banco banco, a.cuenta cuenta, a.numero_chq numero_chq from autorizaciones a, contrato c, codigo_consulta cc where a.codigo_consulta=cc.codigo_consulta and cc.contrato=c.numero and valor_garantizado >0 and pago is null and (numero_compra=0 or numero_compra is null) and a.tipo_documento = '" +string (tipo5)+"'" and a.documento = " +string (docu5)'
Queda así cuando lo muestro a través de un mensaje en ejecución....
en la parte de la linea que esta subrayada aparece con los valores:
and a.tipo_documento ='C' and a.documento =6105951
Así es.
El código que genera tu "select .. from ... where"
y tranquila, mejor hacer las preguntas necesarias =)
Te mando esto no se si sea:
if dos='Búsqueda Avanzada' THEN
ddlb_1.enabled= true
em_1.enabled= true
em_2.enabled= true
em_4.enabled= true
em_3.enabled= true
em_43.enabled= true
if dec(em_1.text)>0 then
docu6 = dec(em_1.text)
dw_1.DataObject= "dw_exoneraciones1"
dw_1.SetTransObject(DBoracle)
dw_4.retrieve(docu6)
end if
script = " select 0 as clave, a.tipo_documento tipo_documento, a.documento documento, a.autorización autorización, a.fecha fecha, a.codigo_consulta codigo_consulta, a.posfechado posfechado, a.valor_garantizado valor_garantizado, a.pago pago, a.numero_cheques numero_cheques, a.banco banco, a.cuenta cuenta, a.numero_chq numero_chq from autorizaciones a, contrato c, codigo_consulta cc where a.codigo_consulta=cc.codigo_consulta and cc.contrato=c.numero and valor_garantizado >0 and pago is null and (numero_compra=0 or numero_compra is null) ";
string tipo5
tipo5 = ddlb_1.text
if len(tipo5) >0 and tipo5 <> 'none' then
c_where = c_where +" and a.tipo_documento = '" +string ('~'tipo5"')+"'"
end if
dec docu5
docu5 = dec(em_1.text)
if dec(em_1.text)>0 then
c_where = c_where +" and a.documento = " +string (docu5)
end if
if c_where='' then
messagebox ("Verifica", "Digite campos para consultar",Exclamation!)
return
else
script=script+c_where;
end if
v_sql_new = script
ls_query = script
messagebox (' ', c_where)
string rc, mod_string
mod_string = "DataWindow.Table.Select='"+script+"'";
messagebox("", mod_string);
dw_1.DataObject= "dw_exoneraciones_bav"
dw_1.SetTransObject(DBoracle)
rc = dw_1.Modify(mod_string)
IF rc = "" THEN
dw_1.Retrieve( )
ELSE
MessageBox("Status", "Modify Failed" + rc)
END IF
return
ls_dw_dinamic = DBoracle.SyntaxFromSQL ( ls_query, "Style(Type=grid)", ls_error )
dw_1.Create ( ls_dw_dinamic, ls_error )
IF ls_error <> '' THEN
MessageBox ( "error de sintaxis", ls_error )
ELSE
dw_1.SetTransObject ( DBoracle )
dw_1.Retrieve(tipo5,docu5, cla4, afic4)
//order by
messagebox( 'Registros Encontrados: ', string(dw_1.rowcount()),exclamation!)
END IF
end if
select 0 clave, a.tipo_documento tipo_documento,
a.documento documento, a.autorizacion autorizacion,
a.fecha fecha, a.codigo_consulta codigo_consulta,
a.posfechado posfechado, a.valor_garantizado valor_garantizado,
a.pago pago, a.numero_cheques numero_cheques, a.banco banco,
a.cuenta cuenta, a.numero_chq numero_chq
from autorizaciones a, contrato c, codigo_consulta cc
where a.codigo_consulta=cc.codigo_consulta and cc.contrato=c.numero
and valor_garantizado >0 and pago is null
and (numero_compra=0 or numero_compra is null)
Consulta, ¿esto por qué est así?
//
string tipo5
tipo5 = ddlb_1.text
if len(tipo5) >0 and tipo5 <> 'none' then
c_where = c_where +" and a.tipo_documento = '" +string ('~'tipo5"')+"'"
end if
//
Entiendo que tipo5 es una variable y es de tipo string, ¿no debería ser así?
c_where = c_where +" and a.tipo_documento = '" + tipo5 + "' "
¿...?
si supongo, al igual eso no genera inconvenientes
y originalmente estaba así:
string tipo5
tipo5 = ddlb_1.text
if len(tipo5) >0 and tipo5 <> 'none' then
c_where = c_where +" and a.tipo_documento = '" +string (tipo5)+"'"
end if
Te había mandado las pruebas que estaba haciendo con el símbolo.....
El uso de lo siguiente "~n", ayuda para generar saltos de linea en medio del texto concatenado:
Por ejemplo si mando un messagebox de esta manera:
Messagebox("Olas","Jojo~nlete")
mi resultado sera lo siguiente:
---------------------------
Olas
---------------------------
Jojo
Lete
---------------------------
Aceptar
---------------------------
Ahora, esto te recomendario que lo uses para tu variable script, ya que noto que tiene una sola linea larga, por no decir larguísima, y no resulta muy conveniente manejarlo de esa forma, y en mi ejemplo puedes notar su adecuado uso.
Recomiendo que corrijas el código que te observe, no veo la necesidad de usar la funcionl string para una variable string.
Por otro lado el uso de las comillas simples en tu query... en lugar del modify, podrías usar lo siguiente:
dw_1. SetSQLSelect(script)
en lugar de esto:
rc = dw_1.Modify(mod_string) ///ya no va!!!
Y te olvidas de conflictos por uso de las comillas y su re-uso para la función modify.
Por cierto si ya con esto se soluciona tus dificultades, y vas a puntuar, considera 5 de 5, dame chance xD
Al arreglar esto:
rc = dw_1.SetSQLSelect(mod_string)
me dice "incompatible types in assignment:string, integer
script es tipo string y solo le cambie la linea que me dijiste
no genera nd porque no he podido arreglar los errores
Pues esto no? estoy confundida
script = " select 0 as clave, a.tipo_documento tipo_documento, a.documento documento, a.autorización autorización, a.fecha fecha, a.codigo_consulta codigo_consulta, a.posfechado posfechado, a.valor_garantizado valor_garantizado, a.pago pago, a.numero_cheques numero_cheques, a.banco banco, a.cuenta cuenta, a.numero_chq numero_chq from autorizaciones a, contrato c, codigo_consulta cc where a.codigo_consulta=cc.codigo_consulta and cc.contrato=c.numero and valor_garantizado >0 and pago is null and (numero_compra=0 or numero_compra is null) ";
select 0 as clave, a.tipo_documento tipo_documento, a.documento documento, a.autorizacion autorizacion, a.fecha fecha, a.codigo_consulta codigo_consulta, a.posfechado posfechado, a.valor_garantizado valor_garantizado, a.pago pago, a.numero_cheques numero_cheques, a.banco banco, a.cuenta cuenta, a.numero_chq numero_chq from autorizaciones a, contrato c, codigo_consulta cc where a.codigo_consulta=cc.codigo_consulta and cc.contrato=c.numero and valor_garantizado >0 and pago is null and (numero_compra=0 or numero_compra is null) and a.tipo_documento = 'C' and a.documento = 6105951
Retomando, primero esa única linea larga donde le asignas el valor inicial a script, fraccionala e inclusive le puedes agregar el valor de salto de linea de manera intercalada.
script = " select 0 as clave, a.tipo_documento tipo_documento, " +
" a.documento documento, a.autorización autorización, " +
" a.fecha fecha, a.codigo_consulta codigo_consulta, " +
" a.posfechado posfechado, a.valor_garantizado valor_garantizado, " +
" a.pago pago, a.numero_cheques numero_cheques, a.banco banco, " +
" a.cuenta cuenta, a.numero_chq numero_chq " +
" from autorizaciones a, contrato c, codigo_consulta cc " +
" where a.codigo_consulta=cc.codigo_consulta and cc.contrato=c.numero " +
" and valor_garantizado >0 and pago is null and (numero_compra=0 or numero_compra is null) ";
Una observación, el query que compartistes ahora ultimo, no tiene concatenada lo demás que se genera en base a tus validaciones. Deseo ver como queda al final con todas esas concatenaciones.
- Compartir respuesta