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...
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...
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
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...
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...
DEFINE BUTTON oBtn;
OF oBar;
NOBORDER;
FONT oFont;
FILENAME "BITMAPS\DEL.BMP";
ACTION Eliminar( oTable, oBrw )
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
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...
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
oBrw:Delete()
/*
* 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
ACTION ( oBrwFamilias:Delete(), oDlg:Update() )
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 RUN
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.
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
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
oBrw := TXBrowse():New( oWnd )
...
oBrw:SetArray( aData, .T. )
Return to FiveWin para Harbour/xHarbour
Users browsing this forum: No registered users and 102 guests