Borrar registro actual en xBrowse?

Borrar registro actual en xBrowse?

Postby Compuin » Tue Dec 26, 2017 10:43 pm

Saludos foro

Quien me puede ayudar con algun ejemplo de como hacerlo en MySql ?

Gracias
Compuin
 
Posts: 692
Joined: Tue Dec 28, 2010 1:29 pm

Re: Borrar registro actual en xBrowse?

Postby joseluisysturiz » Wed Dec 27, 2017 12:35 am

Saludos, que manejados de base de datos estas usando-? Tdolphin, eagle, ado, TMysql, etc.? solo debes crear un queryu con la clausula DELETE condicionada con un WHERE si vas a borrar un solo registro, saludos... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 1832
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: Borrar registro actual en xBrowse?

Postby Compuin » Wed Dec 27, 2017 1:09 am

joseluisysturiz wrote:Saludos, que manejados de base de datos estas usando-? Tdolphin, eagle, ado, TMysql, etc.? solo debes crear un queryu con la clausula DELETE condicionada con un WHERE si vas a borrar un solo registro, saludos... :shock:



Hola Jose Luis

Manejo Eagle1

Lo que no se es como indicarle al Browse que sea el registro donce este posicionado el cursor el que se deba borrar

Saludos
Compuin
 
Posts: 692
Joined: Tue Dec 28, 2010 1:29 pm

Re: Borrar registro actual en xBrowse?

Postby joseluisysturiz » Wed Dec 27, 2017 2:25 am

Compuin wrote:
joseluisysturiz wrote:Saludos, que manejados de base de datos estas usando-? Tdolphin, eagle, ado, TMysql, etc.? solo debes crear un queryu con la clausula DELETE condicionada con un WHERE si vas a borrar un solo registro, saludos... :shock:



Hola Jose Luis

Manejo Eagle1

Lo que no se es como indicarle al Browse que sea el registro donce este posicionado el cursor el que se deba borrar

Saludos


Tomando el campo clave y llevandolo a una variable que luego se la pasaras como condicion en el WHERE en el QUERY DELETE, algo como...

cVar := oQry:cKey el cual tomara el registro donde se encuentre el puntero, algo como se hace en las DBF...hay un sample de facturacion en los SAMPLES de FWH, alli se usan todos los querys: INSERT, SELECT, DELETE, UPDATE y por aca publique un sample de una factura, busca un tema que dice FACTURA y alli ves lo que te digo...saludos... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 1832
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: Borrar registro actual en xBrowse?

Postby Compuin » Wed Dec 27, 2017 2:34 am

joseluisysturiz wrote:
Compuin wrote:
joseluisysturiz wrote:Saludos, que manejados de base de datos estas usando-? Tdolphin, eagle, ado, TMysql, etc.? solo debes crear un queryu con la clausula DELETE condicionada con un WHERE si vas a borrar un solo registro, saludos... :shock:



Hola Jose Luis

Manejo Eagle1

Lo que no se es como indicarle al Browse que sea el registro donce este posicionado el cursor el que se deba borrar

Saludos


Tomando el campo clave y llevandolo a una variable que luego se la pasaras como condicion en el WHERE en el QUERY DELETE, algo como...

cVar := oQry:cKey el cual tomara el registro donde se encuentre el puntero, algo como se hace en las DBF...hay un sample de facturacion en los SAMPLES de FWH, alli se usan todos los querys: INSERT, SELECT, DELETE, UPDATE y por aca publique un sample de una factura, busca un tema que dice FACTURA y alli ves lo que te digo...saludos... :shock:



Jose Luis, gracias

Lo estoy tratando de hacer asi

Code: Select all  Expand view
  DEFINE BUTTON oBtn;
          OF oBar;
          NOBORDER;
          FONT oFont;
          FILENAME "BITMAPS\DEL.BMP";
          ACTION Eliminar( oTable, oBrw )


Y esta es la funcion

Code: Select all  Expand view
static FUNCTION ELIMINAR ( cCodcli, oTable, oBrw )
 local oQry, cSql

  cSql:= "DELETE FROM ctacli WHERE CODCLI = " + cCodcli + " LIMIT 1"

  oQry:=  TMSQuery():New( oAp:oMySqlCon )
  cSql:= oQry:Open( cSql )

  ? cSql

RETURN NIL


El asunto es indicarle que desde el browse borre el registro donde me posiciono
Compuin
 
Posts: 692
Joined: Tue Dec 28, 2010 1:29 pm

Re: Borrar registro actual en xBrowse?

Postby joseluisysturiz » Wed Dec 27, 2017 5:33 pm

Ya eso te lo explique en el mensaje anterior, es casi automatico pasando el valor del campo clave a una VAR y esa VAR la pasas como parametro en el query...saludos... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 1832
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: Borrar registro actual en xBrowse?

Postby Compuin » Wed Dec 27, 2017 5:38 pm

joseluisysturiz wrote:Ya eso te lo explique en el mensaje anterior, es casi automatico pasando el valor del campo clave a una VAR y esa VAR la pasas como parametro en el query...saludos... :shock:


Pues lo estoy haciendo como lo recomendastes y no borraba.

Luego hice este codigo

Code: Select all  Expand view
STATIC FUNCTION ELIMINAR ( cCodCli, oTable, oCursor, oBrw )
  LOCAL cStmt, cSql, aData:={}

  IF MSGNOYES( "Seguro Desea ELIMINAR el Registro: " + ;
      ALLTRIM( cValToChar( oBrw:aArrayData[oBrw:nArrayAt, 1] ) ) + " ?", "Borrando Registro" )

      cStmt:= "DELETE FROM ctacli WHERE CODCLI = " + ALLTRIM( cValToChar( oBrw:aArrayData[oBrw:nArrayAt, 1] ) ) + " LIMIT 1"

      IF oBrw:nLen > 0
         cSql := TMSQuery():New( oAp:oMySqlCon )
         cSql:Open( cStmt )
      ENDIF
  ENDIF

RETURN NIL


Y si logra borrar el registo seleccionado pero no refresca el Browser
Compuin
 
Posts: 692
Joined: Tue Dec 28, 2010 1:29 pm

Re: Borrar registro actual en xBrowse?

Postby nageswaragunupudi » Thu Dec 28, 2017 3:53 am

Dear Friends

FWH makes things far easier and simpler.

It does not matter what data-source you are browsing, be it DBF, ADO, Array, TDophin, FW MySql or any.

Just use only one statement:
Code: Select all  Expand view

oBrw:Delete()
 

XBrowse does everything else for you automatically.

You do not need to do anything more than writing this single statement.

Explanation:
XBrowse knows what data you are browsing. That is, it knows if it is DBF, Array, ADO RecordSet, Dolphin Query, etc. It also knows whether the data is read-only or not. XBrowse also knows how to delete a record in any of these data-sources. It also knows how to reposition the record after deletion and refresh the browse. And finally Xbrowse does all these things quite efficiently on your behalf.

So please do not spend time in coding.
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 5498
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: Borrar registro actual en xBrowse?

Postby admsoporte » Thu Dec 28, 2017 4:43 pm

Aqui va un pequeño ejemplo completo.
Yo aprovecho el soporte nativo de FWH para mysql y lo hago de la siguiente manera y es funcional

Code: Select all  Expand view

/*
 * Proyecto: Almacen
 rAlm04
 para registro de familias
 */

#include "fivewin.ch"
#include "ribbon.ch"
#include "dbf.ch"
#include "dtpicker.ch"
#include "xbrowse.ch"
memvar csql,oRsClientes
function fregFamilias(oCn)
local odlg,ofon1
local obrwfamilias,oRsFamilias
local obtngregar,ors
local obtnnuevo
local obtnedit
local obtnborrar,obtncerrar
local lagregar:=.f.

define font ofon1 NAME "MS SANS SERIF"  SIZE 0,-14
define dialog odlg resource "Rfamilias" font ofon1
csql:="select * from familias where idrz=? order by descripcion"
oRsFamilias  := oCn:RowSet(csql,{ngidrz})
redefine get oRsFamilias:codigo picture "99" ID 4001 of odlg update when .f.
redefine get oRsFamilias:descripcion  picture "@!"  ID 4003 of odlg update when lagregar
redefine xbrowse obrwfamilias of odlg update;
     columns "codigo","descripcion"  ;
         HEADERS "codigo","nombre de familia";
       pictures "999","@!" ;
         SIZES 90,400 ID 4020;
       object oRsFamilias autosort ;
       on right click (obrwfamilias:edit());
       on change odlg:update()

redefine btnbmp obtnagregar file ".\bitmaps\bottom.bmp",".\bitmaps\save.bmp",".\bitmaps\forms.bmp" ;
  LEFT  ID 210  prompt " Agregar" OF odlg update when lagregar action (oRsFamilias:save(),lagregar:=.f.,;
  obrwfamilias:setfocus(),obrwfamilias:refresh(),obrwfamilias:nmovetype:=4,odlg:update())

redefine btnbmp obtnnuevo file ".\bitmaps\new.bmp",".\bitmaps\top.bmp",".\bitmaps\new.bmp" ;
LEFT ID 215 prompt " Nuevo" of odlg update when !lagregar;
action (lagregar:=.t.,oRsFamilias:AppendBlank(),oRsFamilias:idrz:=ngidrz,odlg:update(),odlg:Acontrols[1]:setfocus())
redefine btnbmp obtnedit file ".\bitmaps\edit.bmp",".\bitmaps\edit.bmp",".\bitmaps\edit.bmp" ;
LEFT ID 220 prompt " Modificar" of odlg update when !lagregar action (oRsFamilias:edit(),odlg:update())
redefine btnbmp obtnborrar file ".\bitmaps\delete.bmp",".\bitmaps\minus.bmp",".\bitmaps\cancel.bmp" ;
LEFT ID 230 prompt " Borrar" of odlg update when !lagregar ;
action (ffamiliasborra(oRsFamilias,obrwfamilias,odlg),odlg:update())

redefine btnbmp obtncerrar file ".\bitmaps\quit.bmp",".\bitmaps\exit.bmp",".\bitmaps\quit.bmp" ;
LEFT ID 240 prompt " Cerrar" of odlg update when !lagregar ;
action (odlg:end())
REDEFINE say obrwfamilias:oSeek PROMPT Upper(obrwfamilias:cSeek) ID 4018 of odlg update color CLR_BLUE,CLR_BLACK
obrwfamilias:nFooterHeight := 30 // Altura del footer
obrwfamilias:nMarqueeStyle       := MARQSTYLE_HIGHLROW
obrwfamilias:nFooterLines := 3 // Número de líneas en el footer
obrwfamilias:lFooter := (.T.) // Sí queremos línea de footer
obrwfamilias:lHScroll := (.f.)
obrwfamilias:lVScroll := (.t.)
obrwfamilias:lColDividerComplete:=.t.
activate dialog odlg nowait on init (obrwfamilias:setfocus())
return nil

static function ffamiliasborra(oRsFamilias,obrwfamilias,odlg)
if oRsFamilias:elementos>0
   msgalert("No es posible borrar familia con elementos asignados")
   return nil
endif
if msgyesno("Esta seguro de borrar este registro?")
   oRsfamilias:delete()
   obrwfamilias:setfocus()
   obrwfamilias:refresh()
   obrwfamilias:drawselect()
   obrwfamilias:skip(-1)
   obrwfamilias:skip(1)
   odlg:update()
endif
return nil
 
Saludos

Atentamente

Jose F Dominguez Serafin

email admsoporte@prodigy.net.mx
admsoporte
 
Posts: 10
Joined: Sun Oct 09, 2005 3:09 pm
Location: Mexico

Re: Borrar registro actual en xBrowse?

Postby nageswaragunupudi » Fri Dec 29, 2017 12:20 am

We suggest this ACTION for oBtnBorrar:
Code: Select all  Expand view

ACTION ( oBrwFamilias:Delete(), oDlg:Update() )
 


The function ffamiliasborra(oRsFamilias,obrwfamilias,odlg) is not necessary and can be removed.
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 5498
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: Borrar registro actual en xBrowse?

Postby Compuin » Fri Dec 29, 2017 1:38 am

nageswaragunupudi wrote:Dear Friends

FWH makes things far easier and simpler.

It does not matter what data-source you are browsing, be it DBF, ADO, Array, TDophin, FW MySql or any.

Just use only one statement:
Code: Select all  Expand view

oBrw:Delete()
 

XBrowse does everything else for you automatically.

You do not need to do anything more than writing this single statement.

Explanation:
XBrowse knows what data you are browsing. That is, it knows if it is DBF, Array, ADO RecordSet, Dolphin Query, etc. It also knows whether the data is read-only or not. XBrowse also knows how to delete a record in any of these data-sources. It also knows how to reposition the record after deletion and refresh the browse. And finally Xbrowse does all these things quite efficiently on your behalf.

So please do not spend time in coding.


Mr Rao, Thank you

I tried your advice but it just works deleting from the Browse

When I open it again the record is still there...that"s mean it is being deleting from the array instead MySql table

Please advise
Compuin
 
Posts: 692
Joined: Tue Dec 28, 2010 1:29 pm

Re: Borrar registro actual en xBrowse?

Postby Compuin » Fri Dec 29, 2017 1:44 am

Mr Rao,

I did it on this way and now is working in both the Array and the MySql Table

Code: Select all  Expand view
STATIC FUNCTION ELIMINAR ( cCodCli, oTable, cTabla, oCursor, oBrw )
  LOCAL cStmt, cSql

  IF MSGNOYES( "Seguro Desea ELIMINAR el Registro: " + ;
      ALLTRIM( cValToChar( oBrw:aArrayData[oBrw:nArrayAt, 1] ) ) + " ?", "Borrando Registro" )

      cStmt:= "DELETE FROM ctacli WHERE CODCLI = " + ALLTRIM( cValToChar( oBrw:aArrayData[oBrw:nArrayAt, 1] ) ) + " LIMIT 1"

      IF oBrw:nLen > 0
         cSql := TMSQuery():New( oAp:oMySqlCon )
         cSql:Open( cStmt )
      ENDIF

      oBrw:Delete()
      oBrw:Refresh()

  ENDIF

RETURN NIL
Compuin
 
Posts: 692
Joined: Tue Dec 28, 2010 1:29 pm

Re: Borrar registro actual en xBrowse?

Postby nageswaragunupudi » Fri Dec 29, 2017 1:52 am

Mr Compuin

If you are browsing an Array, xbrowse deletes the row of the Array.
If you are browsing ADO RecordSet or MySql RowSet, or DBF, that record is deleted from the Table
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 5498
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: Borrar registro actual en xBrowse?

Postby Compuin » Fri Dec 29, 2017 1:56 am

nageswaragunupudi wrote:Mr Compuin

If you are browsing an Array, xbrowse deletes the row of the Array.
If you are browsing ADO RecordSet or MySql RowSet, or DBF, that record is deleted from the Table


Dear Mr Rao,

I'm creating my xBrowse like this

Code: Select all  Expand view
oBrw := TXBrowse():New( oWnd )
...
oBrw:SetArray( aData, .T. )


Using Array, which wasn't delete it
Compuin
 
Posts: 692
Joined: Tue Dec 28, 2010 1:29 pm

Re: Borrar registro actual en xBrowse?

Postby nageswaragunupudi » Fri Dec 29, 2017 2:00 am

I am curious to know what is TMsQuery and what is the library you are using for MySql?
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 5498
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 5 guests