• Domingo 16 de Marzo de 2025, 02:22

Mostrar Mensajes

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

Páginas: 1 2 [3] 4
51
Visual Basic 6.0 e inferiores / *.EXE
« 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
Visual Basic 6.0 e inferiores / Re: Por favor, confirmar si funciona...
« 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
Visual Basic 6.0 e inferiores / Re: Imagen con contorno
« 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
Visual Basic 6.0 e inferiores / Re: Imagen con contorno
« 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
Visual Basic 6.0 e inferiores / Re: *.EXE
« 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
MS Access / Reparar una base de datos Access
« 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
Visual Basic 6.0 e inferiores / relaconar 2 tablas para utilizar 2 recordset
« 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
Visual Basic 6.0 e inferiores / Re: hacer programa para una PC 486...
« 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
Visual Basic 6.0 e inferiores / Re: visualizacion de una imagen
« 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
JavaScript / Re: Ayuda para proyecto !!!!
« 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
Visual Basic 6.0 e inferiores / Verificacion de una tabla en una mdb
« en: Viernes 18 de Julio de 2003, 18:31 »
De nada, para eso estamos.

-Un saludo-

62
Visual Basic 6.0 e inferiores / Direccion IP
« 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
Visual Basic 6.0 e inferiores / Re: Verificacion de una tabla en una mdb
« 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
Dudas informáticas / Re: raiz cuadrada en c
« 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
Visual Basic 6.0 e inferiores / Re: Crear base de datos
« 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
Visual Basic 6.0 e inferiores / Re: Crear base de datos
« 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
Visual Basic 6.0 e inferiores / MsFlexGrid
« 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
Visual Basic 6.0 e inferiores / icono en el fichero ejecutable
« 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
Visual Basic 6.0 e inferiores / Problemas con el DbCombo o DataCombo
« 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
Visual Basic 6.0 e inferiores / Re: Ayuda!
« 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
MySQL / Otros lenguajes
« 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.htm

Un saludo.

72
MS Access / capacidad maxima de access
« 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
Visual Basic 6.0 e inferiores / Re: Renombrar ficheros
« 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.htm

Un saludo.

74
Visual Basic 6.0 e inferiores / Re: Ayuda!
« 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
Visual Basic 6.0 e inferiores / aLGIEN SABE=?
« 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.

Páginas: 1 2 [3] 4