En busca del registro deseado
En busca del registro deseado
Hola a todos en el Foro
Antonio
Recurro a ti o a cualquier miembro del foro nuevamente para solicitar una ayuda, he intentado organizar el código para hacer búsqueda del registro requerido, tu sabes bien que estoy nuevo en esto y lo he intentado hacer al estilo clipper con SEEK pero no he tenido buenos resultado se abre el dialogo sin el registro deseado.
Cordialmente
Jairo Barbosa
Antonio disculpa mi descuido ya que no me di cuenta que estaba en el foro otro foro
Antonio
Recurro a ti o a cualquier miembro del foro nuevamente para solicitar una ayuda, he intentado organizar el código para hacer búsqueda del registro requerido, tu sabes bien que estoy nuevo en esto y lo he intentado hacer al estilo clipper con SEEK pero no he tenido buenos resultado se abre el dialogo sin el registro deseado.
Cordialmente
Jairo Barbosa
Antonio disculpa mi descuido ya que no me di cuenta que estaba en el foro otro foro
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Gracias por tu colaboracionAntonio Linares wrote:Jairo,
Muéstranos el código de cómo lo estás haciendo y lo revisamos
//Control de entradas Serviaire
#include "FiveWin.ch"
static oWnd, oBrush
main()
//----------------------------------------------------------------------------//
function Main()
local oBrush
local oIco, oBar
*
SET DELETED ON // para que no aparezcan los registros que borras !!!
*
SET 3DLOOK ON
DEFINE BRUSH oBrush STYLE BRICKS
DEFINE ICON oIco FILE "c:\FWH\icons\car.ico"
DEFINE WINDOW oWnd FROM 1, 1 TO 22, 75 ;
TITLE "Control de servicios Serviaire Ltda" ;
MENU BuildMenu() ;
COLOR "W+/B" BRUSH oBrush ;
ICON oIco
SET MESSAGE OF oWnd ;
TO FWVERSION + ", " + FWCOPYRIGHT CENTERED KEYBOARD
ACTIVATE WINDOW oWnd
return nil
//----------------------------------------------------------------------------//
function BuildMenu()
local oMenu
MENU oMenu
MENUITEM "&Informacion"
MENU
MENUITEM "&Acerca de..." ;
ACTION MsgInfo( "Este trabajo esta escrito en FiveWin ";
+CRLF + FWCOPYRIGHT ) ;
MESSAGE "Informacion acerca de esta aplicacion"
SEPARATOR
MENUITEM "&Salir..." ;
ACTION If( MsgYesNo( "Want to end ?" ),oWnd:End(),) ;
MESSAGE "Salir de la aplicacion"
ENDMENU
MENUITEM "&Archivos"
MENU
MENUITEM "&Entradas..." ;
ACTION Entradas2() ;
MESSAGE "Control de entradas"
MENUITEM "&Buscar" ;
ACTION Busqueda() ;
MESSAGE "Busqueda por placa y por # OT"
ENDMENU
MENUITEM "&Utils"
MENU
MENUITEM "&Calculator..." ;
ACTION WinExec( "Calc" ) ;
MESSAGE "Run Windows calculator"
MENUITEM "C&alendar..." ;
ACTION WinExec( "Calendar" ) ;
MESSAGE "Run Windows calendar"
MENUITEM "&Some fun..." ;
ACTION WinExec( "Sol" ) ;
MESSAGE "Play a game..."
ENDMENU
ENDMENU
return oMenu
//----------------------------------------------------------------------------//
function Entradas2()
local oDlg
local cPlaca
local cFecha
local cEmpresa
local cNombre
local cApellido
local cTel_Fijo
local cTel_Mobil
local cMarca
local cColorr
local cLinea
local cOt
local cIngreso
cPlaca :=space(9)
cFecha :=date()
cEmpresa :=space(36)
cNombre :=space(15)
cMarca :=cApellido:=space(15)
cTel_Fijo :=space(9)
cTel_Mobil :=space(11)
cColorr :=space(10)
cLinea :=space(18)
cOt :=space(7)
cIngreso :=space(15)
cRegis :=space(15)
aItems := {" ","A/C Nuevo","Servicio","Garantia"}
if ! File( "clientes.dbf" )
DbCreate( "Clientes.dbf", { { "Placa", "C", 9, 0 },;
{ "Fecha", "D", 12, 0 },;
{ "Empresa", "C", 25, 0 },;
{ "Nombre", "C", 15, 0 },;
{ "Apellido", "C", 15, 0 },;
{ "Tel_Fijo", "C", 9, 0 },;
{ "Tel_Mobil", "C", 11, 0 },;
{ "Marca", "C", 15, 0 },;
{ "Colorr", "C", 10, 0 },;
{ "Linea", "C", 18, 0 },;
{ "Ot", "C", 7, 0 },;
{ "Ingreso", "C", 15, 0 }})
endif
USE Clientes Alias Clientes NEW// EXCLUSIVE
INDEX ON Clientes->Placa TO Clipla
SET INDEX TO Clipla
GO TOP
SET DATE FRENCH
cRegis :=Recno()
DEFINE DIALOG oDlg RESOURCE "clientes" TITLE "Entrada Servicios Serviaire"
REDEFINE GET getcregis VAR cRegis ID 390 OF oDlg
REDEFINE GET getPlaca VAR cPlaca ID 110 OF oDlg UPDATE PICTURE"!!!999";
VALID (Clientes->Placa:=cPlaca,.T.)
REDEFINE GET getFecha VAR cFecha ID 120 OF oDlg UPDATE ;
VALID (Clientes->Fecha:=cFecha,.T.)
REDEFINE GET getEmpresa VAR cEmpresa ID 130 OF oDlg UPDATE ;
VALID (Clientes->Empresa:=cEmpresa,.T.)
REDEFINE GET getNombre VAR cNombre ID 140 OF oDlg UPDATE ;
VALID (Clientes->Nombre:=cNombre,.T.)
REDEFINE GET getApellido VAR cApellido ID 150 OF oDlg UPDATE ;
VALID (Clientes->Apellido:=cApellido,.T.)
REDEFINE GEt getTel_Fijo VAR cTel_Fijo ID 160 OF oDlg UPDATE ;
VALID (Clientes->Tel_Fijo:=cTel_fijo,.T.)
REDEFINE GET getTel_Mobil VAR cTel_Mobil ID 170 OF oDlg UPDATE ;
VALID (Clientes->Tel_Mobil:=cTel_Mobil,.T.)
REDEFINE GET getmarca VAR cMarca ID 180 OF oDlg UPDATE ;
VALID (Clientes->Marca:=cMarca,.T.)
REDEFINE GET getColorr VAR cColorr ID 190 OF oDlg UPDATE ;
VALID (Clientes->Colorr:=cColorr,.T.)
REDEFINE GET getLinea VAR cLinea ID 200 OF oDlg UPDATE ;
VALID (Clientes->Linea:=cLinea,.T.)
REDEFINE GET getOt VAR cOt ID 210 OF oDlg UPDATE ;
VALID (Clientes->Ot:=cOt,.T.)
**** ojo al tratamiento de este combobox
IF EMPTY(cIngreso) .OR. ; // si el campo esta vacío o
ASCAN(aItems,cIngreso) == 0 // el contenido no consta en elArray de
cIngreso := aItems[1] // opciones
ENDIF
REDEFINE COMBOBOX getIngreso VAR cIngreso ;
ITEMS aItems ID 117 of oDlg VALID (Clientes->Ingreso:=cIngreso,.T.)
REDEFINE BUTTON oBt1 ID 112 OF oDlg ;
ACTION (IF ( !BOF(),DBGOTOP(),),; // |<--
getPlaca:cText := Clientes->Placa,;
getFecha:cText := Clientes->Fecha,;
getEmpresa:cText := Clientes->Empresa,;
getNombre:cText := Clientes->Nombre,;
getApellido:cText := Clientes->Apellido,;
getTel_Fijo:cText := Clientes->Tel_Fijo,;
getTel_Mobil:cText := Clientes->Tel_Mobil,;
getMarca:cText := Clientes->Marca,;
getColorr:cText := Clientes->Colorr,;
getLinea:cText := Clientes->Linea,;
getOt:cText := Clientes->Ot,;
cIngreso :=IIF(EMPTY(Clientes->Ingreso),aItems[1],Clientes->Ingreso),;
getIngreso:refresh())
REDEFINE BUTTON oBt1 ID 113 OF oDlg ; // <--
ACTION ( DbSkip( -1 ),;
If( BoF(), MsgInfo( "Inicio del Archivo" ),),;
getPlaca:cText := Clientes->Placa,;
getFecha:cText := Clientes->Fecha,;
getEmpresa:cText := Clientes->Empresa,;
getNombre:cText := Clientes->Nombre,;
getApellido:cText := Clientes->Apellido,;
getTel_Fijo:cText := Clientes->Tel_Fijo,;
getTel_Mobil:cText := Clientes->Tel_Mobil,;
getMarca:cText := Clientes->Marca,;
getColorr:cText := Clientes->Colorr,;
getLinea:cText := Clientes->Linea,;
getOt:cText := Clientes->Ot,;
cIngreso :=IIF(EMPTY(Clientes->Ingreso),aItems[1],Clientes->Ingreso),;
getIngreso:refresh())
REDEFINE BUTTON oBt1 ID 114 OF oDlg ;//-->
ACTION ( DbSkip( 1 ),;
If( EoF(), DbSkip(1),),;
If( EoF(), MsgInfo( "Fin del Archivo" ),),;
getPlaca:cText := Clientes->Placa,;
getFecha:cText := Clientes->Fecha,;
getEmpresa:cText := Clientes->Empresa,;
getNombre:cText := Clientes->Nombre,;
getApellido:cText := Clientes->Apellido,;
getTel_Fijo:cText := Clientes->Tel_Fijo,;
getTel_Mobil:cText := Clientes->Tel_Mobil,;
getMarca:cText := Clientes->Marca,;
getColorr:cText := Clientes->Colorr,;
getLinea:cText := Clientes->Linea,;
getOt:cText := Clientes->Ot,;
cIngreso :=IIF(EMPTY(Clientes->Ingreso),aItems[1],Clientes->Ingreso),;
getIngreso:refresh())
REDEFINE BUTTON oBt1 ID 115 OF oDlg ; //-->|
ACTION ( IF (!EOF(),DBGOBOTTOM(),),;
getPlaca:cText := Clientes->Placa,;
getFecha:cText := Clientes->Fecha,;
getEmpresa:cText := Clientes->Empresa,;
getNombre:cText := Clientes->Nombre,;
getApellido:cText := Clientes->Apellido,;
getTel_Fijo:cText := Clientes->Tel_Fijo,;
getTel_Mobil:cText := Clientes->Tel_Mobil,;
getMarca:cText := Clientes->Marca,;
getColorr:cText := Clientes->Colorr,;
getLinea:cText := Clientes->Linea,;
getOt:cText := Clientes->Ot,;
cIngreso :=IIF(EMPTY(Clientes->Ingreso),aItems[1],Clientes->Ingreso),;
getIngreso:refresh() )
REDEFINE BUTTON oBt1 ID 223 OF oDlg ; //-->||
ACTION (DBGOBOTTOM(),;
If(!EOF(), DbSkip(1),),;
getPlaca:cText := Clientes->Placa,;
getFecha:cText := Clientes->Fecha,;
getEmpresa:cText := Clientes->Empresa,;
getNombre:cText := Clientes->Nombre,;
getApellido:cText := Clientes->Apellido,;
getTel_Fijo:cText := Clientes->Tel_Fijo,;
getTel_Mobil:cText := Clientes->Tel_Mobil,;
getMarca:cText := Clientes->Marca,;
getColorr:cText := Clientes->Colorr,;
getLinea:cText := Clientes->Linea,;
getOt:cText := Clientes->Ot,;
cIngreso :=IIF(EMPTY(Clientes->Ingreso),aItems[1],Clientes->Ingreso),;
getIngreso:refresh() )
REDEFINE BUTTON oBt1 ID 116 OF oDlg ACTION oDlg:End()
REDEFINE BUTTON oBt1 ID 118 OF oDlg ACTION AgregarNuevo(cPlaca)
REDEFINE BUTTON oBt1 ID 111 OF oDlg ACTION BorraRegistro() //Aqui puedes
//recargar las variables
ACTIVATE DIALOG oDlg on init (IgualaVariable(),BloqueaGets())
USE
return NIL
FUNCTION AgregarNuevo()
cPlaca :=Clientes->Placa
SET DELETED OFF
IF MsgYesNo("Agregar Nueva Entrada","Decida")
SELE Clientes
GO TOP
IF DBSEEK(cPlaca)
IF DELETED()
RECALL
ENDIF
ELSE
APPEND BLANK
Clientes->Placa := cPlaca
ENDIF
ActivaGets()
ENDIF
SET DELETED ON
RETURN NIL
FUNCTION BorraRegistro()
LOCAL nReg := Recno() -1
IF MsgYesNo("Borrar Registro","Confirme")
DELETE
ENDIF
DBGOTO( nReg ) // para colocarse un registro previo al que se ha borrado
// Aquí es otro lugar que puedes volver a refrescar los GET
RETURN NIL
FUNCTION BloqueaGets()
getPlaca:disable()
getFecha:disable()
getEmpresa:disable()
getNombre:disable()
getApellido:disable()
getTel_Fijo:disable()
getTel_Mobil:disable()
getmarca:disable()
getColorr:disable()
getLinea:disable()
getOt:disable()
getIngreso:disable()
RETURN NIL
FUNCTION ActivaGets()
getPlaca:enable()
getFecha:enable()
getEmpresa:enable()
getNombre:enable()
getApellido:enable()
getTel_Fijo:enable()
getTel_Mobil:enable()
getmarca:enable()
getColorr:enable()
getLinea:enable()
getOt:enable()
getIngreso:enable()
RETURN NIL
FUNCTION IgualaVariable()
cPlaca := Clientes->Placa
cFecha := Clientes->Fecha
cEmpresa := Clientes->Empresa
cNombre := Clientes->Nombre
cApellido := Clientes->Apellido
cTel_Fijo := Clientes->Tel_Fijo
cTel_Mobil:= Clientes->Tel_Mobil
cMarca := Clientes->Marca
cColorr := Clientes->Colorr
cLinea := Clientes->Linea
cOt := Clientes->Ot
cIngreso := Clientes->Ingreso
RETURN NIL
//----------------------------------------------------------------------------//
FUNCTION Busqueda()
use clientes
cPlaca := Clientes->Placa
DEFINE DIALOG oDlg RESOURCE "Busqueda" TITLE "Busqueda por Placa y OT"
IF EMPTY(cPlaca) .OR. ; // si el campo esta vacío o
ASCAN(cPlaca) == 0 // el contenido no consta en elArray de opciones
ENDIF
REDEFINE GET getPlaca VAR cPlaca ;
ID 390 of oDlg UPDATE PICTURE"!!!999" VALID( busq(cPlaca))
REDEFINE BUTTON oBt1 ID 4001 OF oDlg ACTION busq(cPlaca)
ACTIVATE DIALOG oDlg
function busq(cPlaca)
USE Clientes Alias Clientes
INDEX ON Clientes->Placa TO Clipla
SET INDEX TO Clipla
GO TOP
cPlaca :=Clientes->Placa
seek(cPlaca)
if found()
entradas2(cPlaca)
endif
return found()
La idea es que con un pequeño dialogo busque por placa o por ot y al ejecutar enter se abra el dialogo entradas2() mostrando el registro solicitado
Acepto todo tipo de criticas y sugerencias que me fortalezcan en FWH
Cordialmente
Jairo
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
AntonioAntonio Linares wrote:Jairo,
Te hemos enviado tu PRG modificado y funcionando correctamente
Gracias Antonio por tus explicaciones, la busqueda del registro deseado funciono muy bien, es fabuloso la forma como se logra, en verdad es gratificante haber aprendido ese punto, solo quda un interrogante, cuando llamo el registro es correcto y muy rapido, pero la informacion que se introdujo por el combobox no aparece en la informacion que trae del registro solicitado, por favor aconsejame como puedo soliccionar este pequeño problemita.
Cordialmente
Jairo Barbosa
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Jairo,
te refieres al combobox de "ingreso" ?
En el PRG faltaba la "@" antes de la variable:
te refieres al combobox de "ingreso" ?
En el PRG faltaba la "@" antes de la variable:
Code: Select all
IgualaVariable( @cPlaca, @cFecha, @cEmpresa,;
@cNombre, @cMarca, @cTel_Fijo,;
@cTel_Mobil, @cColorr, @cLinea,;
@cOt, @cIngreso, @cRegis, @aItems )
Revisare si me falta igualar la variable te lo comentare cuando lo ensaye pero lo que sale en ese campo es el contenido del array y no lo que se encuentra en el dbfAntonio Linares wrote:Jairo,
te refieres al combobox de "ingreso" ?
En el PRG faltaba la "@" antes de la variable:Code: Select all
IgualaVariable( @cPlaca, @cFecha, @cEmpresa,; @cNombre, @cMarca, @cTel_Fijo,; @cTel_Mobil, @cColorr, @cLinea,; @cOt, @cIngreso, @cRegis, @aItems )
Gracias ne nuevo
Antoniojaba wrote:Revisare si me falta igualar la variable te lo comentare cuando lo ensaye pero lo que sale en ese campo es el contenido del array y no lo que se encuentra en el dbfAntonio Linares wrote:Jairo,
te refieres al combobox de "ingreso" ?
En el PRG faltaba la "@" antes de la variable:Code: Select all
IgualaVariable( @cPlaca, @cFecha, @cEmpresa,; @cNombre, @cMarca, @cTel_Fijo,; @cTel_Mobil, @cColorr, @cLinea,; @cOt, @cIngreso, @cRegis, @aItems )
Gracias ne nuevo
Ya lo encontre!! Muchas gracias cuando coloque el @ no se arreglo pero el pequeño array que tre coloco a continuacion cambie el 0 por uno y mire que logica tiene, claro ya lo esta mostrando.
IF EMPTY(cIngreso) .OR. ; // si el campo esta vacío o
ASCAN(aItems,cIngreso) == 0 // el contenido no consta en elArray de
cIngreso := aItems[1] // opciones
Un abrazo
Jairo Barbosa
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact: