¿Se pueden eliminar registros de un query ?

¿Se pueden eliminar registros de un query ?

Postby JoseAlvarez » Sat Nov 26, 2022 12:31 am

Saludos a todos.

¿Es posible eliminar registros del resulltado de una consulta mysql con tdolphin? O sea de un oQuery? Sin hacer una nueva consulta.
O sea eliminarla del oQuery y no de la tabla.

Se puede?
"Los errores en programación, siempre están entre la silla y el teclado..."

Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin

Carora, Estado Lara, Venezuela.
User avatar
JoseAlvarez
 
Posts: 797
Joined: Sun Nov 09, 2014 5:01 pm

Re: ¿Se pueden eliminar registros de un query ?

Postby cmsoft » Sat Nov 26, 2022 12:51 pm

Hola José:
oQry:delete() te borra el registro donde estás posicionado en tu consulta, pero te lo borra de la tabla de donde obtuvo la consulta (siempre que la consulta sea una consulta a una sola tabla)
Espero haber respondido tu consulta
User avatar
cmsoft
 
Posts: 1291
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: ¿Se pueden eliminar registros de un query ?

Postby JoseAlvarez » Sat Nov 26, 2022 2:06 pm

Saludos mi estimado amigo cesar.
Espero estes muy bien.

No, no es eso lo que quería, deseaba borrarlo solo del resultado de la consulta, mas no de la tabla.
Pero ya no es necesario. Solucioné la situación con una función mysql. Son verdaderamente útiles.

Muchas gracias igualmente cesar, que estes muy bien.

Un abrazo.
"Los errores en programación, siempre están entre la silla y el teclado..."

Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin

Carora, Estado Lara, Venezuela.
User avatar
JoseAlvarez
 
Posts: 797
Joined: Sun Nov 09, 2014 5:01 pm

Re: ¿Se pueden eliminar registros de un query ?

Postby carlos vargas » Sat Nov 26, 2022 8:02 pm

Podrias compartir como?
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
carlos vargas
 
Posts: 1721
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: ¿Se pueden eliminar registros de un query ?

Postby JoseAlvarez » Sat Nov 26, 2022 8:38 pm

Hola carlos, estimado amigo.
Saludos.
Tenia la siguiente situacion:

En una consulta que involucra varias tablas, necesitaba tener el resultado con un filtrado obviando los registros donde un campo que guarda el resultado de la suma de una columna de otra tabla, fuese mayor que cero.

Como la suma de los campos se guarda sobre una columna adicional que se crea al momento de ejecutar la consulta, no es posible aplicar un filtro con el WHERE de la manera acostumbrada ya que la columna adicional no existe en ninguna tabla.

Por eso pense inicialmente en eliminar del objeto oQuery aquellos registros que no cumplieran con la condicion, una vez obtenido el mismo.

Al ver la imposibilidad de esto, recorde las funciones y resolvi por esa via. Quiero decir, que no pude eliminarlos del oQuery, pero en su lugar, logre filtarlos con el WHERE usando una función.

Esta noche que llegue a casa montaré aqui el ejemplo de como logré filtrar una consulta con una columna adicional usando funciones mysql.
"Los errores en programación, siempre están entre la silla y el teclado..."

Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin

Carora, Estado Lara, Venezuela.
User avatar
JoseAlvarez
 
Posts: 797
Joined: Sun Nov 09, 2014 5:01 pm

Re: ¿Se pueden eliminar registros de un query ?

Postby JoseAlvarez » Sat Nov 26, 2022 10:36 pm

El primer paso es crear la funcion con el codigo MySql que se necesite, yo uso NAVICAT para administrar mis bases de datos.
Aca una imagen referencial. Con la flecha roja te muestro la opcion de NEW para crear una nueva funcion, y con la azul te muestro como se ve el titulo de la funcion ya guardada.

Image

y aca te muestro al lado derecho mi codigo para este caso, y a mano izquerda donde se almacena dicha funcion dentro del arbol de NAVICAT.

Image

Una vez echa la funcion y probada en el mismo NAVICAT, procedo a incluirla en mi consulta:

Code: Select all  Expand view  RUN
    cQuery:="SELECT "
    cQuery+="Art.codigo_articulo, "
    cQuery+="Art.descripcion, "
    cQuery+="Art.codigo_fabrica, "
    cQuery+="Art.codigo_interno, "
    cQuery+="Exs.codigo_presenta, "
    cQuery+="Exs.existencia, "
    cQuery+="Exs.codigo_color, "
    cQuery+="Exs.codigo_talla, "
    cQuery+="Exs.referencia, "
    cQuery+="Exs.unidades_descuento,"
    cQuery+="Exs.ultimo_costochar,"
    cQuery+="Exs.costo_actualchar,"
    cQuery+="Pres.codigo_presenta, "
    cQuery+="Pres.nombre_presenta, "
    cQuery+="Tall.codigo_talla, "
    cQuery+="Tall.nombre_talla, "
    cQuery+="Col.codigo_color, "
    cQuery+="Col.nombre_color, "
    cQuery+="Exs.pvp_1char, "
    cQuery+="Exs.pvp_2char, "
    cQuery+="Exs.pvp_3char, "
    cQuery+="Art.tipo_iva,  "
    cQuery+="Exs.eliminado, "
    cQuery+="Exs.costo_promediochar, "
    cQuery+="Exs.utilidad_1, "
    cQuery+="Exs.utilidad_2, "
    cQuery+="Exs.utilidad_3, "
    cQuery+="Art.seriales,   "
    cQuery+="Art.factura_negativo "
    cQuery+="FROM "+cTablaArt  +" AS Art,  "
    cQuery+=        cTablaExis +" AS Exs,  "
    cQuery+=        cT_Colores +" AS Col,  "
    cQuery+=        cT_Tallas  +" AS Tall, "
    cQuery+=        cT_Presenta+" AS Pres  "
    cQuery+="WHERE Exs.codigo_articulo = Art.codigo_articulo AND "
    cQuery+=     "Pres.codigo_presenta = Exs.codigo_presenta AND "
    cQuery+=      "Col.codigo_color    = Exs.codigo_color    AND "
    cQuery+=     "Tall.codigo_talla    = Exs.codigo_talla    AND Art.eliminado<>'.T.' AND Exs.eliminado<>'.T.'  "
cQuery+="AND SumaExistencia( Art.codigo_articulo, Exs.codigo_presenta, Exs.codigo_color, Exs.codigo_talla  ) >0 "
   cQuery+="ORDER BY Art.descripcion ASC ;"

 


En la penultima linea, puedes ver la instruccion donde aplico la funcion. En la linea que no tiene separacion del margen.

Espero haberme explicado bien.

Saludos
"Los errores en programación, siempre están entre la silla y el teclado..."

Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin

Carora, Estado Lara, Venezuela.
User avatar
JoseAlvarez
 
Posts: 797
Joined: Sun Nov 09, 2014 5:01 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: cmsoft and 73 guests