Buenas Noches Manu
Mi estimado, retomemos el tema con el compromiso de seguir adelante
oportunamente, somos profesionales en programacion y sabemos las
necesidades de los clientes y que de ellos dependemos.
Asi dejemos atras todo e iniciemos el trabajo..
a. Te agradecere me envies la libreria Eagle1 con la correccion
mencionada, como sabes utilizo Harbour y xharbour Version 2007-
Diciembre que esta publicada en Foro de FiveWin, en todo caso me
avisas para reenviartela...
Quizas como idea adicional, seria interesante tener los lineamientos
o un archivo batch para reconstruir la libreria eagle1 o condor1 a
fin de no cargarte con dicha tarea me imagino quita tiempo.
b. Respecto del uso de ALLTRIM(xCCCCC,10) contiene un parametro
adicional efectivamente y es un error pero para este caso no es
operativo ni genera ninguna accion ni error adicional, retornando el
valor normal del ALLTRIM, .
c. Respecto a la mi comentario "de no poder grabar el Registro o
linea de la tabla", me refiero a los siguiente: -->> es cuando luego
de haber asignado en variables locales los valores de los campos de
un registro, luego mostrados en un cuadro de dialogo para permitir
su modificacion por el usuario, al terminar el cuadro de Dialogo
(oDlg:End()) , deseo grabar o actualizar estos nuevos datos en el
registro o linea de la tabla, esto no me funciona, y me emite un
mensaje de error .
Utilice el UPDATE y el FieldPut() (pero este ultimo no le habia
puesto el parametro .t. , que veo en tus comentarios en esta
contestacion ), el cual probare, pero si tienes algun comentario
adicional que darme, pues bienvenido sea.
d. En referencia a tus indicaciones y explicaciones que has
expresado me dan una mejor idea como aplicarlas y las llevare al
campo de la aplicacion, y sobre el camino te cometare.
Por otro lado Manu, si te parece, tratare de publicar ejemplos con
las correciones y/o usos de las funciones para compartir y analizar
los problemas que van pasando por este camino, esto sera util para
los que viene atras mio... como tu me dijiste en una oportunidad.
Ah, por favor, No te olvides del documento de autorizacion de uso de
la Libreria que te solicite llenar para mi registro.
Gracias por tu atencion
Lubin.
Lubisys Asesores EIRL
Lima - Peru
--- En eagle1@yahoogroups.com, "loloexpo" <messoft@...> escribió:
> Antes de nada lamento todo esto. Realmente quiero que todo salga
> adelante y que Eagle1 sea para todos una plataforma fácil para
poder
> trabajar con MySQL desde cualquier GUI y especialmente FWH.
>
> Dicho esto paso a responderte por el mismo orden en que enumeras
las
> cuestiones:
>
> 1. Efectivamente hay un bug muy ridículo pero que es el que te ha
> hecho perder el tiempo. Si sabes compilar un PRG y sustituirlo en
la
> LIB es muy fácil de corregir, edita TMSConnect.prg y marca como
> comentario esto que te indico:
>
> //-----------------------------------------------------------------
----------//
> // Abre la conexion con los parametros especificados
>
> METHOD Connect( cHost, cUser, cPasswd, ;
> cDbName, nPort, cSocket, nFlag ) CLASS TMSConnect
>
> local lConnected
>
> if ::lInit
> if lConnected := E1RealConnect( ::hConnect, cHost, cUser, ;
> cPasswd, cDbName, nPort, cSocket,
nFlag )
> if ValType( cDbName ) == "C"
> ::oDataBase := TMSDataBase():New( Self, cDbName )
> endif
> ::RefreshVar()
> else
> ::oError:Show()
> // ::Free() //<----- Esto quítalo o coméntalo
> endif
> else
> lConnected := .f.
> endif
>
> ::lConnected := lConnected
>
> return( lConnected )
>
> //-----------------------------------------------------------------
----------//
>
> Aquí se destruye el objeto con el método ::Free()si no se conecta
con
> lo cual lo que hagas después dará errores.
> También puedes volver a crear el objeto, por cierto creo que hay un
> error en tu código:
>
> WHost:=ALLTRIM(WHost,10) // AllTrim sólo admite un parámetro,
no?
> WUser:=ALLTRIM(WUser,10)
> WPasw:=ALLTRIM(WPasw,10)
> msginfo(Whost+""+WUser+""+WPasw)
>
> ////// Aquí crea denuevo el objeto:
> oCon := TMSConnect():New()
>
> IF .NOT. oCon:Connect(WHost, WUser, WPasw)
> MSGINFO("Paramentros de conexion ERRADA, Verifique ")
> oCon:CLOSE()
> return .f.
> ENDIF
>
> Yo ya tengo Eagle1 corregida si quieres te la construyo y te la
envío :-)
>
> Perdón Lubin :-(
>
> 2. No entiendo la pregunta... a qué te refieres con: "he logrado
> cargar los datos pero no puedo grabar"?
>
> ----------------------------------
>
> Ahora las otras preguntas...
>
> 1. Como se crea tablas con Clave Primaria xxxx :
>
> Si usas el objeto TMsTable podrás hacerlo muy facilmente con el
método:
> CreatePrimaryKey( xCol )
> xCol puede ser el nombre de una columna o un array con las columnas
> que van a formar la clave primaria, ejemplo:
> if oTb:CreatePrimaryKey( "nid" )
> Alert( "Se creó la clave primaria" )
> endif
> Si la PK es más de un campo sería así:
> if oTb:CreatePrimaryKey( {"nid", "cNombre" } )
> Alert( "Se creó la clave primaria" )
> endif
>
> Si decides hacerlo con un objeto TMSCommand sería así:
> local cStmt := "ALTER TABLE miTabla ADD PRIMARY KEY ( nid,
cNombre )"
>
> if oCmd:ExecDirect( cStmt )
> Alert( "Se creó la clave primaria" )
> endif
>
> Recuerda que puedes crear el objeto oCmd asi:
> oCmd := TMSCommand():New( oCon )
> o usar la DATA ::oCmd del tipo TMSCommand que tienen los objetos de
> manejo de datos (TMSTable, TMSQuery, etc) con lo que sería asi:
>
> local cStmt := "ALTER TABLE miTabla ADD PRIMARY KEY ( nid,
cNombre )"
>
> if oTb:oCmd:ExecDirect( cStmt )
> Alert( "Se creó la clave primaria" )
> endif
>
> 2. Como crear los Indices u ordenamientos y como hacerlos activos.
>
> Si usas el objeto TMSTable con el método ::CreateIndex( cIndex,
xCol,
> lUnique )
> Siendo cIndex el nombre del indice, xCol lo mismo que en la PK y
> lUnique un valor lógico que indica si es un índice que no admite
> duplicados.
>
> OJO!!!! los indices en SQL no tienen el mismo sentido que en las
DBF.
> En SQL sirven para acelerar procesos repetitivos con los campos que
> forman parte del indice.
>
> Para ordenar una cosnsulta se usa la clausula ORDER BY campo
> Si usas un objeto TMSTable fijate que puedes pasarle todos estos
> parametros al método constructor:
> New( oDbCon, cName, cWhere, cHaving, cOrderBy, nLimit )
> oDbCon objeto Conexion o DataBase
> cName nombre de la tabla
> cWhere condicion tipo "nid < 100 and cnombre like 'Manu%'" por
ejemplo
> cHaving condicion usando alguna función SQL
> cOrderBy orden
> nLimit limite de registros maximo que nos traeremos desde el
servidor
>
> para tí el importante es el cOrderBy que podrá ser asi:
> oTb := TMSTable():New( oCon, "mitabla",,, "nid, importe" )
> incluso se puede usar el ordinal de la columna en la consulta:
> oTb := TMSTable():New( oCon, "mitabla",,, "1, 5" )
> 1 sería la primera columna y 5 la quinta
>
> Pero si quieres cambiar el orden una vez creado el objeto TMSTable
> deberías hacerlo asi:
>
> oTb:SetOrder( xCol )
>
> xCol puede ser el lugar de la columna por la que quieres ordenar
ejemplo:
>
> oTb:SetOrder( 1 )
>
> o puedes usar el nombre:
>
> oTb:SetOrder( "nid" )
> o una lista de nombres de columna o lugar que ocupan:
>
> oTb:SetOrder( "1, 5, 3" ) ó oTb:SetOrder( "nId, cNombre,
nImporte" )
>
>
> Si usas TMSQuery te lo tienes que montar tú:
>
> local cStmt := "SELECT * FROM miTabla ORDER BY nId, cNombre"
>
> oQry:Open( cStmt )
>
> y cada vez que quieras hacer un nuevo orden hacer un Open con el
cStmt
> cambiado...
>
>
> 3. como se manejan las tablas relacionadas y como se realiza esta
> relacion al manejarlos con un listbox
>
> Aquí tienes que usar forzosamente un objeto TMSQuery.
> Por ejemplo:
>
> cStmt:= "SELECT t1.nid, t1.cNombre, sum( t2.nVentas ) FROM Vendedor
> t1, Ventas t2 WHERE t1.nid = t2.nid"
>
> oQry:Open( cStmt )
>
> Aquí me temo que tendrás que saber un poco de SQL sobre todo la
> sentencia SELECT con JOIN por ejemplo. :-(
>
> Para meterlo en un ListBox es como tú lo has hecho ya.
>
>
> 4. Como se actualizan los registros si vamos a realizar una
> actualizacion a varias tablas luego de un proceso. (me refiero a
los
> SELECT por ejemplo en harbor u clipper)
>
> Si usas TMSTable tienes:
>
> METHOD Insert
> METHOD Update
> METHOD Delete
>
> Para asignar los valores de las variables puedes usar SetBuffer( n,
> Val ) o FiedlPut n, Val )
> siendo n el orden la columna o campo y val el valor que le quieres
> asignar:
>
> oTb:FieldPut( 1, miVar1 )
> oTb:FieldPut( 2, miVar2 )
> oTb:FieldPut( 3, miVar3 )
>
> oTb:Insert( .t. ) // Altas o oTb:Update( .t. ) si quieres
actualizar
>
> Mírate el ejemplo PT05.PRG
>
>
>
>
> Reitero mis disculpas y espero ayudarte en todo lo que me pidas ;-)
>
> Saludos a todos.
> Manu
>
>
>
>
>
>
> --- En eagle1@yahoogroups.com, "lubsys" <lubin@> escribió:
> >
> > Hola Manu
> >
> > Lamentablemente no he resuelto el problema el cual te resumo en
lo
> > siguiente :
> >
> > 1. He creado unas variables locales para whost,Wuser,EPasw para
la
> > conexion, las cuales las cargo con los datos de conexion
respetiva.
> > Si los datos son correctos cargados en la variables ,la
conexcion
> > se realiza sin problemas, pedi cuando no lo son Yo los solicito
por
> > un cuadro de dialogo y pido el Host, User, Pasw, etc.. pero
pese a
> > que se digitan los datos correctos , no se conecta.
> > He publicado el archivo conec01.prg en la seccion de archivos
para
> > ver cual es el problema.
> >
> > 2. Por otro lado, sencillamente tire la toalla en ese tema y por
el
> > momento estoy cargando los datos internamente por variables (por
que
> > el dialogo no me funciona) hasta esperar alguna ayuda.
> >
> > Ahora estoy en otro punto, como lo conecto asi no mas(cargando
las
> > variables internamente) , he podido crear mi base de datos en
> > MySql, luego tambien mis tablas.
> > He intentado hacer un mantenimiento con un listbox incluido, el
cual
> > he logrado cargar los datos pero no puedo grabar ,,
> >
> > La verdad que la falta de ejemplos y un manual de referencia y
la
> > demora de dias! en hacerte las consultas es un problema mayor,
> > pues comprenderas que de esta libreria depende mi trabajo pese
a
> > que he tenido de investigar la clases para ver que parametros
> > usar.... cosa de la cual un usuario final (Programador)
deberia
> > de simplemente usar las librerias ,, no ponerse a investigar o
> > adivinar como funcionan pues con mi falta de conocimientos
profundos
> > de Mysql adicionado a la falta de documentacion de la libreria
me
> > generan un gran problema.
> >
> > Tengo muchas preguntas, (claro usando el Eagle, no usando el
mysql
> > intercativamente por fuera) por ejemplo :
> > 1. Como se crea tablas con Clave Primaria xxxx
> > 2. Como crear los Indices u ordenamientos y como hacerlos
activos.
> > 3. como se manejan las tablas relacionadas y como se realiza
esta
> > relacion al manejarlos con un listbox,
> > 4. Como se actualizan los registros si vamos a realizar una
> > actualizacion a varias tablas luego de un proceso. (me refiero a
los
> > SELECT por ejemplo en harbor u clipper)
> >
> >
> > Ojala pudieras brindarme algun ejemplo mas practico documentado
de
> > lo siguiente (aplicado con FiveWin para harbour:
> > 1. Un Mantenimiento de una Tabla que se muestre en un
listbox ,
> > con proceso de lectura,modificacion ,borrado de un registro, que
> > permita mostrarse en tres ordenamientos ,, Eje, Codigo, nombre,
> > categoria
> >
> > 2. Un Mantenimiento de una Tabla relacionada mostrada en un
> > listbox que permita actualizar datos.
> >
> >
> > Como veras, son muchas las inquietudes, quizas sea el unico al
> > parecer, pero necesito saber si vas a poder estar en capacidad
de
> > apoyarme en el uso de esta libreria pero en forma oportuna no a
los
> > dias o cuando puedas, para poder tomar una descision , pues como
> > comprenderas y ya te comente al inicio, de esto vive mi Familia
y
> > Yo, asi mismo en correos internos te mande un documento para que
me
> > envies la autorizacion de Uso de tu libreria, que sustenta la
> > inversion que hice contigo, por favor si pudieras remitirmela,
te lo
> > agradecere.
> >
> >
> > Lubin Azahuanche
> > Lubsys Asesores EIRL
> > Lima - Peru
> >
> >
> >
> >
> >
> >
> > --- En eagle1@yahoogroups.com, Manu <messoft@> escribió:
> > >
> > > Buenos días a todos...
> > > Lubin se arregló el problema?
> > >
> > > He estado fuera y no he podido responderte....
> > >
> >
>