FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour TDolphin - Consulta sobre :Save (Solucionado)
Posts: 1380
Joined: Fri Oct 14, 2005 01:28 PM

TDolphin - Consulta sobre :Save (Solucionado)

Posted: Thu Oct 24, 2013 02:29 PM
Gente (Daniel)
Basado en el sample sa_vs_up. prg hago mi codigo así:
Code (fw): Select all Collapse
   oQry:= ::oConn:oSrv:Query( "select A.dia, A.hora, @L:= B.desc_club, A.tantos1, @V:= C.desc_club, A.tantos2, A.idfecha "+ ;
                                                           "from fechas as A, clubes as B, clubes as C where A.idclub1=B.id_club and A.idclub2=C.id_club" )
   ::oData= oQry

   // Dialogo
   DEFINE DIALOG soDlg3 RESOURCE "dlg_Browse" OF soDlg2 TITLE "Fechas"
   soDlg3:lHelpIcon:= FALSE

   REDEFINE XBROWSE oBrw OBJECT oQry ID 500 ;
            HEADERS "Dia", "Hora", "Local", "TantosL", "Visita", "TantosV" AUTOCOLS ;


   WITH OBJECT oBrw
      ...

      :bLDblClick:= {|| ::oData:= oQry:GetRowObj(), ;
                        ::CargaResultados(), ;
                        ::oData:LoadQuery(), ::oData := oQry, ;
                        oBrw:Refresh() }
   END
   WITH OBJECT oBrw:tantosl
      :cHeader:= "Tantos"
      :nWidth:= 40
   END
   WITH OBJECT oBrw:tantosv
      :cHeader:= "Tantos"
      :nWidth:= 40
   END
   ...

PROCEDURE CargaResultados( oQry )  CLASS TCompetencias
local oSelf:= Self, ;
      oDlg

   DEFINE DIALOG oDlg RESOURCE "dlg_Partido"

   REDEFINE GET ::oData:tantos1 ID 101 OF oDlg ;
            PICTURE "999"

   REDEFINE GET ::oData:tantos2 ID 102 OF oDlg ;
            PICTURE "999"

   REDEFINE RBBTN PROMPT "Guardar"+CRLF+"<F5>" ID BTN_ACCION OF oDlg TRANSPARENT ;
                  BITMAP "bmp_Save" ;
                  ACTION ( oSelf:oData:Save(), oDlg:End() )
   ...

Al Guardar me sale el error: ERR_INVALIDSAVE 9016
Que estoy haciendo mal?
Si lo hago mediante ::Execute( "UPDATE fechas SET tantos1..." ); la acción se ejecuta de forma correcta
Resistencia - "Ciudad de las Esculturas"

Chaco - Argentina
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 PM

Re: TDolphin - Consulta (de principiante ;-) sobre :Save

Posted: Thu Oct 24, 2013 02:53 PM

Hola

no puedes hacer un SAVE de una consulta que contenga multiples tablas (INNER JOINS, LEFT JOINS, FROM tableA, tableB, etc)

la forma correcta en este caso es hacer el UPDATE

Posts: 1380
Joined: Fri Oct 14, 2005 01:28 PM

Re: TDolphin - Consulta (de principiante ;-) sobre :Save

Posted: Thu Oct 24, 2013 04:38 PM

bien!... sabía que tan perdido no estaba! :)

muchas gracias

Resistencia - "Ciudad de las Esculturas"

Chaco - Argentina
Posts: 1380
Joined: Fri Oct 14, 2005 01:28 PM

Re: TDolphin - Consulta sobre :Save (Solucionado)

Posted: Mon Oct 28, 2013 08:19 PM
Retomo este tema porque vuelvo a tener problemas con el metodo :Save()
Tengo la siguiente Tabla
Code (fw): Select all Collapse
"CREATE TABLE IF NOT EXISTS posiciones(" + ;                             
"idposic    INT(10)    UNSIGNED ZEROFILL PRIMARY KEY AUTO_INCREMENT," + ;
"idtorneo   INT(10)    UNSIGNED NOT NULL,"  + ;                          
"zona       CHAR(1)    DEFAULT '',"         + ;                          
"desc_club  VARCHAR(40) NOT NULL,"          + ;                          
"jugados    INT(2)     UNSIGNED DEFAULT 0," + ;                          
"ganados    INT(2)     UNSIGNED DEFAULT 0," + ;                          
"empate     INT(2)     UNSIGNED DEFAULT 0," + ;                          
"perdidos   INT(2)     UNSIGNED DEFAULT 0," + ;                          
"afavor     INT(3)     UNSIGNED DEFAULT 0," + ;                          
"encontra   INT(3)     UNSIGNED DEFAULT 0," + ;                          
"diferencia INT(3)     UNSIGNED DEFAULT 0," + ;                          
"puntos     INT(3)     UNSIGNED DEFAULT 0)" + ;                          
"COMMENT=   'Tabla de Posiciones'" + ;                                   
"ENGINE=  INNODB;"

luego genero una consulta, en esta tabla y, como inicialmente esta vacía debo insertar los datos; para lo que hago:
Code (fw): Select all Collapse
local oDatPos:= soConx:oConn:oSrv:Query( "SELECT * FROM posiciones WHERE idtorneo="+Str( ::oData:idTorneo,,,.T.)+" and zona='"+::oData:Zona+"' " + "and desc_club='"+::oData:FieldGet(_FLocal)+"'" )

   if oDatPos:LastRec() == 0
      oDatPos:GetBlankRow()
   elseif oDatPos:LastRec() == 1
      oDatPos:GetRowObj()
   end

?  ;
   oDatPos:idtorneo  := ::oData:idtorneo, ;
   oDatPos:zona      := ::oData:zona, ;
   oDatPos:desc_club := ::oData:FieldGet(_FLocal), ;
   oDatPos:jugados   += 1, ;
   oDatPos:ganados   := 0, ;
   oDatPos:empate    := 0, ;
   oDatPos:perdidos  := 0, ;
   oDatPos:afavor    += ::oData:tantos1, ;
   oDatPos:encontra  += ::oData:tantos2, ;
   oDatPos:diferencia+= (::oData:tantos1-::oData:tantos2), ;
   oDatPos:puntos    += 0
// Verificado los valores, todos reflejan el dato asignado coorrespondiente, (::oData...son valores de una consulta previa)
   ? oDatPos:Save()

El :Save() me devuelve verdadero,pero lo único que guardo es el valor autoincremental del primer campo
Que hago mal?
La otra pregunta es: Si la Tabla TIENE datos,pero al hacer la Consulta, los valores de Where NO se cumplen y consulto el :LastRec(), este devolverá 0?

gracias
Resistencia - "Ciudad de las Esculturas"

Chaco - Argentina
Posts: 46
Joined: Tue May 07, 2013 07:27 PM

Re: TDolphin - Consulta sobre :Save (Solucionado)

Posted: Tue Oct 29, 2013 12:52 PM

Mario

el error esta en oDatPos:GetBlankRow()

debe ser oDatPos:GetBlankRow(.f.)

Abrazo Pedro

Posts: 1380
Joined: Fri Oct 14, 2005 01:28 PM

Re: TDolphin - Consulta sobre :Save (Solucionado)

Posted: Tue Oct 29, 2013 01:31 PM

Gracias Pedro
Interesante, en el sample sa_vs_up, no lo usa (debo mirar todos los samples!)

Saludos!

Resistencia - "Ciudad de las Esculturas"

Chaco - Argentina
Posts: 682
Joined: Tue Feb 14, 2006 09:48 AM

Re: TDolphin - Consulta sobre :Save (Solucionado)

Posted: Wed Oct 30, 2013 07:18 AM
Por curiosidad, en que difiere

oDatPos:GetBlankRow()
y
oDatPos:GetBlankRow(.f.)
cunado usar una u otra.

Yo hasta ahora para añadir registros siempre he usado oDatPos:GetBlankRow()

Hector Pedro Lerda wrote:Mario

el error esta en oDatPos:GetBlankRow()

debe ser oDatPos:GetBlankRow(.f.)

Abrazo Pedro
Saludos desde Mallorca
Biel Maimó
http://bielsys.blogspot.com/
Posts: 1380
Joined: Fri Oct 14, 2005 01:28 PM

Re: TDolphin - Consulta sobre :Save (Solucionado)

Posted: Wed Oct 30, 2013 10:03 AM
Biel;
El motivo, seguramente el mas indicado para responder es Daniel
En la clase Tdolpqry.prg se puede observar:
Code (fw): Select all Collapse
METHOD GetBlankRow( lRow ) CLASS TDolphinQry
...
   IF lRow
      ::oRow = ::GetRowObj()
   ENDIF
   
RETURN ::oRow
Resistencia - "Ciudad de las Esculturas"

Chaco - Argentina
Posts: 46
Joined: Tue May 07, 2013 07:27 PM

Re: TDolphin - Consulta sobre :Save (Solucionado)

Posted: Wed Oct 30, 2013 01:20 PM

Mario en el ejemplo de testfw3.prg y testfw3.prg tenes la utilización de oQry:GetBlankRow( .F. )

Posts: 1380
Joined: Fri Oct 14, 2005 01:28 PM

Re: TDolphin - Consulta sobre :Save (Solucionado)

Posted: Wed Oct 30, 2013 01:35 PM
Si Pedro, gracias
Por eso conteste a tu primer post:
MarioG wrote:Gracias Pedro
Interesante, en el sample sa_vs_up, no lo usa (debo mirar todos los samples!)
Resistencia - "Ciudad de las Esculturas"

Chaco - Argentina

Continue the discussion