|
Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.
Mensajes - acalanto
51
« en: Martes 29 de Julio de 2003, 16:11 »
Gracias Cyclops por el Link. le he hechado un vistazo y parece que tiene cosas interesantes como mínimo para probarlas.
Un cordial saludo -acalanto-
52
« en: Martes 29 de Julio de 2003, 16:06 »
Yo, aunque soy nuevo en el foro, he intentado aportar el fruto de mi conocimiento y en algunos casos creo que he aportado soluciones qué, a mi modo de entender las cosas son robustas, elegantes y prácticas, a pesar de que en algún caso sean complajas para quien realiza la pregunta.
Sólo en unos casos contados he recibido la confirmación de si ha ido bien, mal, no lo comprende o necesita más ayuda.
En el mundo de la programática, todos nos podemos beneficiar de los conocimientos y la ayuda que desinteresadamente otros están dispuestos a aportar (no solamente de lenguajes y S.O. sino de otros conocimeintos que pueden ser en algunos casos enriquecedores si el que pregunta lo entiende).
Estoy de acuerdo que aunque parezca algo dictatorial, será necesario apuntar los nombres de aquellos que no tienen intención de colaborar y que además es posible que su catadura profesional se deba poner, quizás, en duda.
Todo aquel que tenga un problema y yo conozca la respuesta o la posible solución que cuente con mi valioso tiempo si eso le sirve de ayuda, quien solamente desee pasar el rato obtener una solución 'hecha a medida' sin romperse un poco las neuronas, no me hallará.
Un saludo a todos aquellos que intentamos hacer que esto realmente funcione como una base de conocimiento.
Gracias a todos. -acalanto- Madrid (España)
53
« en: Martes 29 de Julio de 2003, 09:24 »
La solución propuesta de los colores es válida siempre y cuando dos provincias contiguas no tengan el mismo color (no podrías saber en cual de ellas estás).
La solución pasa por que controles dentro de que polígono se encuentra el cursor.
Supongo que conoces las coordenadas (x,y) del contorno de cada provincia que representes en el mapa. Si es así te puedes crear una estructura de datos más o menos de esta forma
type poligono x as double y as double end type
type provincias id as integer nombre as string items as integer contorno() as poligono end type
public mymap() as provincias
'Carga los datos
redim mymap(1 to totalprovincias)
'Empiezas a llenar la estructura (esto lo puedes tener en un fichero con el mismo formato.
'ALAVA mymap(1).id=1 mymap(1).nombre="Alava" mymap(1).items=10 redim mymap(1).contorno(1 to 10) 'coordenadas del polígono ALAVA mymap(1).contorno(1).x=1000 mymap(1).contorno(1).y=2000 mymap(1).contorno(2).x)=1200 ...... ...... mymap(1).contorno(10).x=9600 mymap(1).contorno(10).y)=12300
'BADAJOZ mymap(2).id=2 mymap(2).nombre="Badajóz" mymap(2).items=6 redim mymap(2).contorno(1 to 6) 'coordenadas del polígono BADAJOZ mymap(2).contorno(1).x=500 mymap(2).contorno(1).y=600 mymap(2).contorno(2).x)=560 ...... ...... mymap(2).contorno(6).x=450 mymap(2).contorno(6).y)=320
'ASI HASTA TENER TODAS LAS COORDENADAS EN LA ESTRUCTURA
Una vez tienes dibujado sobre un objeto PICTURE las provincias con sus colores, datos etc etc.. y escalado a la misma escala que las coordenadas grabadas, deberás de controlar el paso del mouse y cada vez que se mueva llamar a una función parecida a está. si la función te devuelve <> 0, este será el ID de la provincia y a partir de aqui lo que quieras hacer. Si es =0, el cursor no esta dentro de ninguna provincia. Puede resultar un poco complejo pero desde luego es la solución más elegante y profesional.
NOTA: LAS COORDENADAS DE LOS POLIGONOS DEBEN DE ESTAR ORDENADAS EN SENTIDO DE LAS AGUJAS DEL RELOJ.
Public Function IdxProvincia(x as double, y as double)
'la x y la y son las coordenadas del ratón sobre el objeto picture
dim i as integer dim p as integer dim IN as boolean
for i=1 to total provincias IN=true for p=1 to mymap(i).items -1 'verificar si el cursor se encuentra siempre 'a la derecha de todos los segmentos del polígono if disr(mymap(i).contorno(p).x,mymap(i).contorno(p).y,mymap(i).contorno(p+1).x,mymap(i).contorno(p+1).y, x, y) < 0 then IN=FALSE next p if IN=true then IdxProvincia=i:exit function next i 'El cursor no está dentro de ningún contorno idxProvincia=0 end function
'================================================================= 'ESTA FUNCION CALCULA LA DISTANCIA DE UN PUNTO A UNA RECTA DADA '=================================================================== Private Function Disr(x1 As Double, y1 As Double, x2 As Double, y2 As Double, XP As Double, YP As Double) As Double
'Variables temporales Dim Ap As Double Dim a As Double Dim b As Double Dim c As Double On Error Resume Next 'Calcular los parámetros de la ecuación 'de la recta enviada. Ap = (y1 - y2) a = -Ap b = (x1 - x2) c = -((y1 * b) - (x1 * Ap))
'Calcular la distancia del punto a la recta If Sqr((a ^ 2) + (b ^ 2)) = 0 Then Disr = 0 Else Disr = ((a * XP) + (b * YP) + c) / Sqr((a ^ 2) + (b ^ 2)) End If
End Function
54
« en: Martes 29 de Julio de 2003, 09:07 »
La solución propuesta de los colores es válida siempre y cuando dos provincias contiguas no tengan el mismo color (no podrías saber en cual de ellas estás).
La solución pasa por que controles dentro de que polígono se encuentra el cursor.
Supongo que conoces las coordenadas (x,y) del contorno de cada provincia que representes en el mapa. Si es así te puedes crear una estructura de datos más o menos de esta forma
type poligono x as double y as double end type
type provincias id as integer nombre as string items as integer contorno() as poligono end type
public mymap() as provincias
'Carga los datos
redim mymap(1 to totalprovincias)
'Empiezas a llenar la estructura (esto lo puedes tener en un fichero con el mismo formato.
'ALAVA mymap(1).id=1 mymap(1).nombre="Alava" mymap(1).items=10 redim mymap(1).contorno(1 to 10) 'coordenadas del polígono ALAVA mymap(1).contorno(1).x=1000 mymap(1).contorno(1).y=2000 mymap(1).contorno(2).x)=1200 ...... ...... mymap(1).contorno(10).x=9600 mymap(1).contorno(10).y)=12300
'BADAJOZ mymap(2).id=2 mymap(2).nombre="Badajóz" mymap(2).items=6 redim mymap(2).contorno(1 to 6) 'coordenadas del polígono BADAJOZ mymap(2).contorno(1).x=500 mymap(2).contorno(1).y=600 mymap(2).contorno(2).x)=560 ...... ...... mymap(2).contorno(6).x=450 mymap(2).contorno(6).y)=320
'ASI HASTA TENER TODAS LAS COORDENADAS EN LA ESTRUCTURA
Una vez tienes dibujado sobre un objeto PICTURE las provincias con sus colores, datos etc etc.. y escalado a la misma escala que las coordenadas grabadas, deberás de controlar el paso del mouse y cada vez que se mueva llamar a una función parecida a está.
Public Function IdxProvincia(x as double, y as double)
'la x y la y son las coordenadas del ratón sobre el objeto picture
dim i as integer dim p as integer
for i=1 to total provincias
next i
55
« en: Domingo 27 de Julio de 2003, 20:49 »
Para hacer un programa de instalacion debes de disponer de un programa especifico para generar aplicaciones de instalación y éste te registrara todos los componentes que necesite el proyecto.
Vb 6.0 trae una herramienta para generar paquetes de instalación (Distribución o deploy lo llaman ellos), el problema es que en sólo funciona hasta Windows 98 y en Windows 200, Me y Xp se hace un pequeño lio y no acaba bien la instalación.
Mi consejo es que te bajes el programa de distribución de Windows Msi de la página de microsoft ( busca por Visual Studio Installer en la sección de Downloads). Es gratuíto y funciona aceptablemente bien aunque es muy limitado en las instalaciones.
Si quieres algo más potente deberás ir a productos como Install Shield. Yo utilizo SETUP FACTORY de Indigo Rose y estoy encantado con los resultados, lo malo de estas aplicaciones es que son de pago y cuestan en torno a los 300 US $ (de ahi en adelante).
Espero haber sido de ayuda.
-Un saludo-
56
« en: Jueves 24 de Julio de 2003, 20:36 »
Deberías indicar como realizas la carga.. Desde código escrito por tí ??
Si es así deberías cargar en el proyecto la referencia a MicroSoft DAO 3.6. Ya que lo que no encuentra es la referencia al objeto Databases.
Si me aclaras algo más quizás te pueda ayudar.
Un saludo.
57
« en: Martes 22 de Julio de 2003, 21:01 »
Tienes varias opciones.
Si tienes dos tablas inserta dos controles ADO en el formulario.
A cada uno le asignas la base de datos y recordset que le corresponda.
inserta en el formlario los campos necesarios de una y otra tabla sin olvidar aquellos campos que establecen la relación (los puedes ocultar si lo deseas).
Cuando pidas un registro nuevo en la tabla 'A' deberás sincronizar el segundo mediante una sentencia SELECT * FROM (tablaB) WHERE <idtablaB>=<idtablaA>
Ya tienes en el segundo ADO el/los registros relacionados.
Es responsabilidad tuya actualizar los valores de campos comunes ya que VB no lo va a hacer por tí.
Otra opción pero un poco más extensa es utilizar la directiva SHAPE, pero es algo más largo de explicar.
Si tienes VB6 te recomiendo que con el asistente de formularios generes un formulario Maestro-Detalle (Utiliza SHAPE) y así podrás estudir el código generado en profundidad.
-Un saludo-
58
« en: Martes 22 de Julio de 2003, 20:51 »
Sobre el PC 486 cualquier aplicación compilada para Windows debería de funcionar (más o menos rápida), el problema es que si tienes Windows 3.11 no te 'rodarán' aplicaciones realizadas con VB 6.0 y me parece que con el 5.0 tampoco ya que generan aplicaciones de 32 bits y Windows 3.11 es 16 bits.
Creo recordar que existía una utilidad llamada win32exe o algo parecido que permitía de alguna forma ejecutar aplicaciones 32 bits sobre un S.O. de 16 bits.
Espero haberte sido de utilidad.
-Un saludo-
59
« en: Sábado 19 de Julio de 2003, 14:10 »
Tengo la sensación de que lo que deseas realizar es un gráfico dibujando las lineas, círculos etc... por tu cuenta, es decir, no cargas una imagen raster.
Para visualizar todo debes de calcular primero las coordenadas mínimas y máximas de los datos a representar (Más si lo deseas añades un margen).
Antes de dibujar sobre el picture haz lo siguiente.
pictobj.scale(minx,maxy)-(maxx,miny)
despues dibuja y te saldrá todo..
NOTA: Por defecto en el picture las ordenadas crecen de arriba abajo por esta razón te he puesto en el escalado las coordenadas al revés...
-Un saludo-
60
« en: Viernes 18 de Julio de 2003, 19:06 »
Hola. Yo estoy bastante metido en el tema de manipulación de cartografía vectorial, GPS, GPRS y demás elementos para construir sistemas de información geográfica, seguimiento y teledetección, pero en instalaciones locales (Por lo que tengo un control absoluto de los equipos y datos para su representación).
En JavaScript creo que no es posible 'dibujar' en la pantalla o al menos lo desconozco. En cualquier caso tendrías que realizar unas rutinas excesivamente complejas y capaces de escalar, sombrear, renderizar, escribir la toponímia y un sinfin de operaciones complicadas para que las escriba un robot y además salgan bien (Una vez generado el htm con JavaScript embebido no podrás verificar cual ha sido el resultado que recibe el cliente).
Yo creo que todas las aplicaciones que ofrecen mapas en internet lo primero que realizan es una transformación de los datos vectoriales a un formato raster (Puede ser un BMP o JPEG que pese poco) y esto es lo que realmente envian al cliente.
Si dominas Java 2, y los formatos de cartografía vectorial que manipulas, creo que no te será dificil implementar las clases que ejecuten esta transformación.
Perdona el rollo y espero que te resulte orientativo..
-Un saludo-
61
« en: Viernes 18 de Julio de 2003, 18:31 »
De nada, para eso estamos.
-Un saludo-
62
« en: Jueves 17 de Julio de 2003, 22:15 »
Vamos a ver....
La IP Fija solamente sirve para un enrutador tras el que suele encontrarse un servidor (de lo que sea Apache, IIS etc.). Si tu realizas una conexión a 'algo' mediante un módem, estás haciendo un acceso telefónico a redes y quien en todo caso tiene la IP Fija es tu ISP. (A la que tú accedes eguramente a través de un servidor de dominios DSN).
Si contratas un servicio de alojamiento de web con un ISP y es de pago, a lo mejor, y sólo a lo mejor, te dará una IP Fija.
Si contratas un servicio ADSL con router (de la marca que sea), es probable que la compañía telefónica te asigne una IP Fija 'entre comillas' (la puede cambiar cuando le venga en gana). Si esto es así y el router instalado lo permite, te pofrás generar una VPN o red privada virtual parcheando la IP Pública con la Privada (las que tienes en tu red local).
No se si esto te aclarará alguna cosa a pesar de que este no sea el sitio adecuado para la consulta.
Un saludo -Acalanto-
63
« en: Jueves 17 de Julio de 2003, 22:01 »
Debes de escribir el siguiente código (o algo parecido).
public function ExistTable(Nombretabla as string, dbname as string) as boolean
dim db as dao.database dim tb as tabledef
on local error <aqui lo que desees para capturar errores>
'se supone que dbname lleva la ruta completa <path+fichero.mdb> set db=worspaces(0).opendatabase(dbname)
for each tb in db.tabledefs if lcase(trim(tb.name))=lcase(trim(nombretable)) then existtable = true:exit function next tb
'el nombre de la tabla no se ha encontrado en la colección Tabledefs de la base de datos. existtable=false
end function
espero que te resulte útil (ya me lo dirás)
Un saludo -acalanto-
64
« en: Martes 15 de Julio de 2003, 18:25 »
Prueba a hacer una función que eleve el número a la inversa de la raíz.
P. Ej.
float square(float num, float root) { return(num^(1/root)); }
65
« en: Martes 15 de Julio de 2003, 18:08 »
Este elemplo casado de MSDN te puede aclarar alguinos conceptos.
Sub CreateDatabaseX()
Dim wrkDefault As Workspace Dim dbsNew As DATABASE Dim prpLoop As Property
' Get default Workspace. Set wrkDefault = DBEngine.Workspaces(0)
' Make sure there isn't already a file with the name of ' the new database. If Dir("NewDB.mdb") <> "" Then Kill "NewDB.mdb"
' Create a new encrypted database with the specified ' collating order. Set dbsNew = wrkDefault.CreateDatabase("NewDB.mdb", _ dbLangGeneral, dbEncrypt)
With dbsNew Debug.Print "Properties of " & .Name ' Enumerate the Properties collection of the new ' Database object. For Each prpLoop In .Properties If prpLoop <> "" Then Debug.Print " " & _ prpLoop.Name & " = " & prpLoop Next prpLoop End With
dbsNew.Close
End Sub
Consulta en MSDN <CreateDataBase>;<TableDefs>;<Fields>;<Indexes>;<Relations>
Un saludo
66
« en: Martes 15 de Julio de 2003, 18:03 »
Efectivamente puedes utilizar el método append para crear una base de datos. Además esto lo puedes hacer con FIELDS, INDEXES, RELATIONS y cualquier otro objeto que dependa del objeto DataBase.
Un saludo.
67
« en: Martes 15 de Julio de 2003, 18:00 »
No estoy de acuerdo con la respuesta anterior. El Flexigrid lo que no te acepta de forma automática es órdenes desde el teclado, pero puedes variar los valores de cada celda mediab¡nte FlexObject.Textmatrix(row,col)=texto.
Esta propiedad en conjunto con los eventos Keydown y Keypress te permiten que el usuario pueda introducir datos.
Si lo programas muy bien puedes controlar que la celda sólo acepte los datos a los que está destinada (Número con o sin decimales, fecha etc etc..)
Un saludo.
68
« en: Martes 15 de Julio de 2003, 17:56 »
Pon los iconos que consideres necesarios en los formularios (o al menos en uno de ellos). Ves a propiedades del proyecto y en la pestaña GENERAR, en el aplartado aplicación te aparece una lista de los formularios del proyecto. Selecciona aquel que tiene el icono que deseas aparezca en el ejecutable y ya está.
Es así de sencillo.
Un saludo.
69
« en: Lunes 14 de Julio de 2003, 20:38 »
Deberías de establecer la propiedad MatchEntry con el valor 1 que corresponde a dblExtendedMatching.
Con esto cuando el usuario vaya tecleando el objeto mostrará el registro más próximo a la cadena introducida.
70
« en: Domingo 13 de Julio de 2003, 12:41 »
Por la imágen que remites, y es solo un suponer, veo que tienes una tabla Cmd_AlumnosMatriculados de la cual insertas 3 campos (Código_Alumno;Código_Matrícula;Fecha_Matrícula), otra tabla relacionada con la primera Cmd_Curso de la que insertas un campo (Descripción_Curso). por último de la tabla CmdAlumnos intentas insertar un campo (Apellidos_Alumno) el cual no te deja ponerlo en el DETALLE del informe.
Es posible que se establezca en este caso una relación MUCHOS A UNO que no tenga solución, revisa la estructura del SQL o ejecuta en pantalla la consulta, igual así puedes determinar el origen del error.
Un saludo
71
« en: Sábado 12 de Julio de 2003, 10:52 »
Estefanía: MySql se deja manejar por cualquier entorno que soporte ODBC... Necesitarás descargarte el driver para Windows en la página oficial de MySql. El tema es lo suficientemente amplio como para no poder responder en unas pocas líneas por lo que te aconsejo que mires todos los ejemplos que hay en la siguiente dirección. http://espasoft.kaos.es/2000VB/MySql.htmUn saludo.
72
« en: Sábado 12 de Julio de 2003, 10:45 »
Efectivamente yo lo hago también de esta forma. En la base de datos un campo guarda la información de donde está situada la imagen (Una carpeta, un cd etc.) y mediante código la puedes cargar en un picture....
El principal problema puede radicar en si alguien borra esos datos... Te has quedado sin las fotos ....
Si necesariamente las debes guardar como un objeto dentro de la base de datos y por el volumen que indicas, tendrás que ir pensando en migrar a un gestor más potente como SQL-Server.
Efectivamente MauroA tiene razón Access 97 puede alcanzar hasta 1GB. de datos y la versión 2000 ysuperiores 2GB.
Otra posibilidad sería que fragmentes los datos en diferentes bases Access agrupándolos por algun tipo de categoría. En cualquier caso estás usando una base de datos 'doméstica' para un proposito de base de datos documental.....??
Recuerda que !!A cada pájaro hay que matarlo con su escopeta!!
Un saludo...
73
« en: Sábado 12 de Julio de 2003, 10:35 »
Si quereis tener un absoluto control sobre Discos, ficheros, carpetas etc... os aconsejo utilizar el objeto FileSystemObject, con el que además podeís desarrollar macros con ScriptControl (Sólo VB6). Una referencia completísima la encontraís en: http://www.html.dk/dokumentation/vbscri ... system.htmUn saludo.
74
« en: Sábado 12 de Julio de 2003, 09:58 »
Si nos das algunas pistas sobre cual es tu problema a lo mejor te podemos ayudar jeje....
Un saludo..
75
« en: Sábado 12 de Julio de 2003, 09:53 »
Prueba esto
EN UN MODULO
Option Explicit
Public Type fut a As Integer b As String End Type
Public t As fut Dim ft As fut
Public Function GetMe() As fut ft.a = 25 ft.b = "Esta cadena pasa por la fucion" GetMe = ft End Function
EN UN FORMULARIO
Option Explicit
Private Sub Form_Load() On Error Resume Next t = GetMe() End Sub
De todas maneras te dire que como sera obligatorio que lo declares comoo un elemento público, no tiene demasiado sentido que la función devuelva el contenido del tipo definido por usuario (Al ser público puedes tratarlo directamente en la variable pública que apunta a esa estructura de datos.
Espero que te sea útil Un saludo.
|
|
|