• Lunes 6 de Mayo de 2024, 08:27

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 - jimmy007

Páginas: [1]
1
Visual Basic 6.0 e inferiores / Re: Winsock, Aunke Realmente No Se Se Es Posible
« en: Martes 27 de Septiembre de 2005, 04:16 »
Citar
Según lo que yo tengo entendido, en el servidor tienes un puerto de escucha, que quiere decir esto, por ese puerto el servidor recibe todos los pedidos de conexion, siempre es uno.

Hasta aki estabas bien pero ...

Citar
Una vez que recibe un pedido de conexion, si lo acepta abre otro puerto que es por el cual se va a comunicar con el cliente que le hizo el pedido.

Como ke si lo acepta abre otro puerto ?, claro ke no.
Tal vez kiciste decir abre otra conexion pero no puerto, y aun asi no es correcto para el control winsock de VB.

El control winsock de VB en modo servidor solo acepta una conexion a la vez por el mismo puerto, si un cliente ya se conecto y un segundo cliente tambien se kiere conectar este segundo cliente no podra conectarse hasta ke se desconecte el primero.

La solucion para ke varios clientes se puedan conectar al mismo tiempo por el mismo puerto y con un solo control winsock es crear una matriz de controles del winsock, como lo puse en el post de mas arriba.

primero al cargar el form donde esta el control winsock con la propiedad index en 0 en modo servidor se pone a la escucha en el puerto ke kieras, en el ejemplo es el 1001, despues cada cliente ke kiera conectarse al servidor por el puerto 1001 se lanzara el evento ConnectionRequest del winsock ke tiene el parametro index ke es el ke identifica ke control es dentro de la matriz, en este caso sera 0 por ke cada cliente ke se kiere conectar al puerto 1001 index sera 0 porke el control de la posicion 0 es el ke se puso a la escucha en el puerto 1001, entonces en el evento ConnectionRequest se comprueba con el if si el index es cero si si lo es se crea una nueva instancia del control en la posicion ke sigue dentro de la matriz, asi cada instancia creada se encargara de cada cliente ke se conecte y de sus peticiones.

En el codigo cada vez ke se crea la nueva instancia en la parte de
Código: Text
  1.  
  2. sckServer(intMax).LocalPort = 0   'aki se le dice con el 0 ke la nueva instancia esta en el mismo puerto original ke se abrio en el caso del ejemplo el 1001.
  3.  
  4. sckServer(intMax).Accept requestID ' aki se acepta la nueva conexion en la nueva instancia.
  5.  
  6.  

Espero ke con esto ya kede claro.

Saludos.

2
Visual Basic 6.0 e inferiores / Re: Winsock, Aunke Realmente No Se Se Es Posible
« en: Sábado 24 de Septiembre de 2005, 18:36 »
Aceptar más de una solicitud de conexión con control Winsock

Es posible aceptar varias solicitudes de conexión con el mismo control si crea una matriz de controles. En este caso, no necesita cerrar la conexión; basta con crear una nueva instancia del control (estableciendo la propiedad Index) e invocar el método Accept de la nueva instancia.

El código que se muestra a continuación presupone que existe un control Winsock en un formulario llamado sckServer y que su propiedad Index tiene el valor 0, por lo que el control forma parte de una matriz de controles. En la sección Declaraciones se declara una variable intMax a nivel de módulo. En el evento Load del formulario, intMax tiene establecido el valor 0 y la propiedad LocalPort del primer control de la matriz tiene el valor 1001. Después, se invoca el método Listen en el control, convirtiéndolo en el control "que escucha". A medida que llega cada solicitud de conexión, el código comprueba si el índice es 0 (el valor del control "que escucha"). Si es así, este control aumenta la variable intMax y utiliza ese número para crear una nueva instancia del control. Esta instancia se utiliza para aceptar la solicitud de conexión.

Código: Text
  1.  
  2. Private intMax As Long
  3.  
  4. Private Sub Form_Load()
  5.    intMax = 0
  6.    sckServer(0).LocalPort = 1001
  7.    sckServer(0).Listen
  8. End Sub
  9.  
  10. Private Sub sckServer_ConnectionRequest _
  11. (Index As Integer, ByVal requestID As Long)
  12.    If Index = 0 Then
  13.       intMax = intMax + 1
  14.       Load sckServer(intMax)
  15.       sckServer(intMax).LocalPort = 0
  16.       sckServer(intMax).Accept requestID
  17.       Load txtData(intMax)
  18.    End If
  19. End Sub
  20.  
  21.  

Saludos.  :hola:

3
Visual Basic 6.0 e inferiores / Re: Impresion Directa Para Un Reporte En Cr8
« en: Miércoles 21 de Septiembre de 2005, 12:42 »
No se de ke dll's hablan pero si ya tienen el crystal ya con eso tienen para enviar la impresión directo a la impresora.

salu2.

4
Visual Basic 6.0 e inferiores / Re: Impresion Directa Para Un Reporte En Cr8
« en: Miércoles 21 de Septiembre de 2005, 07:07 »
Para imprimir directo a la impresora es con un metodo de la variable de tipo reporte de crystal reports:
Código: Text
  1.  
  2. CrxReport.PrintOut False, NCopias, , PagIni, PagFin
  3.  
  4.  
el False es para ke no muestre ningun diálogo al usuario, el siguiente es el número de copias y los 2 siguientes es el rango de páginas a imprimir, con esto se va directo a la impresora en caliente  ;)

espero les sirva

Saludos.

5
Visual Basic 6.0 e inferiores / Re: Problemas Al Ejecutar Programa En Win98
« en: Martes 20 de Septiembre de 2005, 00:38 »
Cita de: "arrebiato"
;) no estoy muy seguro pero, revisa que el personal Web Server este funcionando correctamente en windows98 espero te sirva :blink:
ke tiene ke ver personal web server ? esta hablando de una aplicacion hecha en VB <_<

6
Visual Basic 6.0 e inferiores / Re: Problemas Al Ejecutar Programa En Win98
« en: Martes 20 de Septiembre de 2005, 00:33 »
El MySQL funciona mejor estando instalado como un servicio en windows de tipo NT como Win 2000 o XP, y en windows 98 no es posible tener servicios en este caso se instala como una aplicacion, lo recomendable es ke centralices la información en un ekipo con win 2000 o xp con mysql instalado y ke los demas ekipos con win 98 o el ke sea se conecten a este por medio de la red.

si las makinas no estan en red y cada una trabaja de forma independiente entonces verifica ke tu makina con win98 tenga el mysql instalado como aplicacion y no como servicio sino es eso verifica tu conector ke me imagino debe ser el de odbc, si no es nada de eso entonces lo mas recomendable y para kitarte de pexs es kitar el nche win98 y pongas win 2000 si la makina ya anda medio vieja o win xp si lo awanta.

Saludos.

7
Visual Basic 6.0 e inferiores / Re: Problemas Con Consulta Sql
« en: Jueves 15 de Septiembre de 2005, 12:23 »
Si usas SQL Server esta solucionado, pues es mejor utilizar un procedimiento almacenado con un parametro de tipo cadena y desde VB lo llamas pasandole el parametro

por ejemplo:

El Porcedimiento almacenado seria mas o menos asi:
------------------------------------------------------------
CREATE PROCEDURE pruebita
@nombre varchar(20)
AS

SELECT * FROM Tabla WHERE nombre = @nombre
GO

-----------------------------------
para llamarlo desde VB seria:
-----------------------------------
Dim cnx As New ADODB.Connection
Dim cmd As New ADODB.Command
Dim prm As New ADODB.Parameter
Dim rst As New ADODB.Recordset

cnx.Open "Provider=SQLOLEDB.1; etc."

cmd.CommandType = adCmdStoredProc
cmd.CommandText = "pruebita"
Set prm = cmd.CreateParameter("nom", adVarChar, adParamInput, 20)
prm.Value = "Julian's"   <----aki como veras no hay problema
cmd.Parameters.Append prm
cmd.ActiveConnection = cnx

Set rst = cmd.Execute   <----aki te devuelve el recordset

El chiste es utilizar un parametro para no estar concatenando con el apostrofe (') ke es donde esta el problema.

Claro esto es con SQL Server, es la ventaja de utilizar un SGBD en regla y no el motor MS JET (access).

Saludos.  :hola:

8
Visual Basic 6.0 e inferiores / Re: Abrir Mdb En Pc Remoto
« en: Jueves 15 de Septiembre de 2005, 11:21 »
No podras acceder a los datos de una base de datos de MS JET (access) en remoto ni por FTP ni por ningun otro medio, lo maximo ke se puede hacer en red con una base da datos de jet es compartirlo en una red LAN y nadamas, de ahi para accesar por tcp/ip no lo permite el motor jet, te sugiero ke migres tu base a un SGBD de servidor como lo es MySQL o SQL Server, con estos si podras accesar a los datos atraves de internet. te pongo algunas datos tecnicos por ke por lo ke me doy cuenta hay desconocimiento de esto:

Muchas veces se habla de bases de datos Access para referirse a los archivos *.mdb. Estrictamente hablando, esto no es correcto. Access no es quien crea y gestiona directamente los archivos mdb, sino el motor Jet de Microsoft. El motor Jet está formado por una serie de archivos .dll de distribución gratuita que se instalan en el directorio de sistema de Windows. De hecho, es posible crear en Windows un archivo mdb, o incluso llenarlo de tablas y datos aun sin tener Access. Para ello basta con emplear ODBC o ADO en programas hechos en Visual Basic.

SQL Server escucha un puerto TCP/IP, y Jet no.

SQL Server puede recibir conexiones (clientes que desean manipular datos) desde cualquier computadora conectada a Internet. En este aspecto es igual que un servidor web o un servidor de correo. La diferencia es el número de puerto y, naturalmente, el protocolo con el que se comunicará con el cliente. Un navegador es un cliente para un servidor web, pero no conoce el protocolo para hablar con un servidor de bases de datos. Por ejemplo, Access 2000 o Access XP son clientes para SQL Server.

Por el contrario Jet no escucha ningún puerto. Aunque sea posible crear aplicaciones que trabajan en red con archivos .mdb (con Visual Basic o Access), el uso de la red se refiere únicamente a que el archivo mdb resida en una computadora distinta a la aplicación. Sin embargo, todo el procesamiento se realiza en un único equipo. La red sólo actúa aquí únicamente como si fuese otro disco duro.

SQL Server admite la programación cliente-servidor, y Jet no.

La programación cliente-servidor se utiliza cuando queremos realizar aplicaciones que utilicen redes y que comuniquen entre sí a varias Computadoras. Básicamente consiste en que el programa se divide en dos partes:

La parte Cliente, que reside en el equipo donde está el usuario y se encarga de la interacción con éste.

La parte Servidor, que reside en un ordenador conectado a la red permanentemente y se encarga de manipular los datos.
Ambas partes de la aplicación se comunican entre sí utilizando algún protocolo de red TCP/IP. La justificación de este paradigma es la minimización del tráfico de red, sobre todo para evitar ralentizaciones y economizar el ancho de banda.


Espero ke con esto kede claro

Saludos.  :hola:

9
Crystal Reports / Re: Que Tan Malo Puede Ser Cristal
« en: Sábado 10 de Septiembre de 2005, 16:14 »
Cita de: "Pinza"
Cita de: "mark375"
Hola , yo estoy usando la 10 de Crystal con entorno sql y Vb , tube algunos problemas para hacerlo correr en algunas maquinas pero no es para echarle la culpa el crystal sino a la configuracion del sql
y para instalar las dll para su distribucion,  con el " package y deployment "que viene incorporado en visual me alcanzo
 
Para mi es muy bueno
tenes idea de como refrescar bien los datos? siempre me muestra el resultado de la misma consulta!!!!

 :scream: saludos.-
En el menu 'File' de Crystal desmarca la opcion 'Save Data with Report' kitale la palomita y guarda tu reporte y con eso.

Saludos.

10
Visual Basic 6.0 e inferiores / Re: Se Podra Hacer Este Tipo De Form ????
« en: Jueves 8 de Septiembre de 2005, 06:15 »
Lo ke tienes ke hacer es paginar los resultados, depende tambien de ke base de datos uses si usas MySQL con LIMIT paginas, si estas con SQL Server lo puedes hacer con un SP asi:

Código: Text
  1.  
  2. En el ejemplo extraemos un listado de la base de datos Northwind de productos ordenados por categorías, extraemos los campos ID del producto, nombre del producto y nombre de la categoría. El Stored Procedure recibe dos parámetros:
  3.  
  4. - Index, el número de página que queremos mostrar
  5. - NumRegs, el número máximo de registros a mostrar por página.
  6.  
  7. Create Procedure Paginacion_Registros
  8.  
  9. --Número de página a mostrar
  10.  
  11. @index integer
  12. -- Total de resgistros por página
  13.  
  14. @NumRegs integer
  15. As
  16.  
  17. -- Declaramos dos variables que serán los índices mayor
  18. -- y menor del filtro de paginación
  19.  
  20. Declare @Maximo numeric
  21. Declare @Minimo numeric
  22.  
  23. -- Y asignamos los valores que le corresponden a cada página
  24. -- la asignación de los límites se realiza de la siguiente forma:
  25. -- si index = 1 y NumRegs = 10, entonces los registros a mostrar
  26. -- son del 1 al 10, si index = 2, los registros a mostrar son del 11 al 20
  27. -- y asi sucesivamente.
  28.  
  29. Select @Maximo = (@index * @NumRegs)
  30. Select @Minimo = @Maximo - (@NumRegs - 1)
  31.  
  32. -- Creamos la tabla temporal para la paginación,
  33. -- con un campo auto numérico que será el que nos
  34. -- sirva de índice a la hora de extraer los registros.
  35.  
  36. Create Table #tmpListado (
  37. nOrden INT IDENTITY(1,1),
  38. IDProducto numeric,
  39. NombreProducto varchar(40),
  40. NombreCategoria varchar(15)
  41. )
  42.  
  43. -- Insertamos en la tabla temporal directamente del select
  44.  
  45. Insert #tmpListado Select Products.ProductID, Products.ProductName,
  46. Categories.CategoryName
  47. From Products, Categories
  48. Where Products.CategoryID = Categories.CategoryID
  49. order by Categories.CategoryName
  50.  
  51. -- Una vez tenemos los datos en la tabla temporal los extraemos
  52. -- con un select filtrados por los valores de paginación
  53. -- @Maximo y @Minimo
  54.  
  55. Select IDProducto, NombreProducto, NombreCategoria
  56. FROM #tmpListado
  57. WHERE (nOrden BETWEEN @Minimo AND @Maximo)
  58.  
  59. Si pruebas el ejemplo y vas cambiando el valor de index veras como va paginando el Stored Procedure.
  60.  
  61.  
  62.  
---------------------------------------------------------

Tambien puedes paginar desde un recordset, por ejemplo:

Código: Text
  1.  
  2. Este ejemplo utiliza las propiedades AbsolutePage, PageCount y PageSize para mostrar los nombres completos y las fechas de contratación de la tabla Empleados, de cinco en cinco registros.
  3.  
  4. Public Sub AbsolutePageX()
  5.    
  6.    Dim rstEmployees As ADODB.Recordset
  7.    Dim strCnn As String
  8.    Dim strMessage As String
  9.    Dim intPage As Integer
  10.    Dim intPageCount As Integer
  11.    Dim intRecord As Integer
  12.  
  13.    ' Abre un objeto Recordset mediante un cursor del
  14.    ' cliente para la tabla Empleados.
  15.    strCnn = &#34;Data Source=srv;Initial Catalog=pubs;User Id=sa;Password=; &#34;
  16.    Set rstEmployees = New ADODB.Recordset
  17.    ' Utiliza el cursor del cliente para activar la propiedad
  18.    ' AbsolutePosition.
  19.    rstEmployees.CursorLocation = adUseClient
  20.    rstEmployees.Open &#34;empleado&#34;, strCnn, , , adCmdTable
  21.    
  22.    ' Muestra los nombres y las fechas de contratación, de cinco
  23.    ' en cinco registros.
  24.    rstEmployees.PageSize = 5
  25.    intPageCount = rstEmployees.PageCount
  26.    For intPage = 1 To intPageCount
  27.       rstEmployees.AbsolutePage = intPage
  28.       strMessage = &#34;&#34;
  29.       For intRecord = 1 To rstEmployees.PageSize
  30.          strMessage = strMessage & _
  31.             rstEmployees!fname & &#34; &#34; & _
  32.             rstEmployees!lname & &#34; &#34; & _
  33.             rstEmployees!hire_date & vbCr
  34.          rstEmployees.MoveNext
  35.          If rstEmployees.EOF Then Exit For
  36.       Next intRecord
  37.       MsgBox strMessage
  38.    Next intPage
  39.    rstEmployees.Close
  40.  
  41. End Sub
  42.  
  43.  

Espero te sirva

Saludos desde México :hola:

11
Visual Basic 6.0 e inferiores / Re: Ayuda Urgente Con Consulta Sql
« en: Miércoles 31 de Agosto de 2005, 01:28 »
Ok Solcito la ultima consulta no esta mal solo te falta ke muestre tambien la fecha y poner un alias al total de la suma de la venta  y este alias pornerlo en el order by osea kedaria asi:

Código: Text
  1.  
  2. SELECT   TOP 1 Fecha, SUM(monto) AS Totalvta
  3. FROM Tabla1
  4. GROUP BY Fecha
  5. ORDER BY Totalvta DESC
  6.  
  7.  

Saluditos  :hola:

12
Visual Basic 6.0 e inferiores / Re: Ayuda Urgente Con Consulta Sql
« en: Martes 30 de Agosto de 2005, 03:19 »
Cita de: "solcito"
Para saber que dia se vendió mas

Código: Text
  1.  
  2. SELECT TOP 1 count(Fecha) from  Tabla1
  3. GROUP BY Fecha
  4. Order by 1 DESC
  5.  
  6.  

Aqui estas sacando la fecha mas alta osea la ultima fecha de venta y no estas tomando en cuenta el valor de la venta osea no obtienes ke dia vendiste mas y tu consulta asi como la planteaste resumido seria:

SELECT MAX(Fecha) AS UFecha From Tabla1

Para saber que dia se vendi menos:

Código: Text
  1.  
  2. SELECT TOP 1 count(Fecha) from  Tabla1
  3. GROUP BY Fecha
  4. Order by 1
  5.  
  6.  

Esto es lo mismo ke lo anterior pero la fecha mas baja y resumido seria:

SELECT MIN(Fecha) AS UFecha From Tabla1

Para saber cuanto se vendió en esos dias:

Código: Text
  1.  
  2. SELECT   TOP 1 SUM(monto)
  3. FROM Tabla1
  4. GROUP BY Fecha
  5. Order By 1 DESC
  6.  
  7.  

Esta esta mal tambien, dices ke lo ke se vendio en esos dias si nadamas esta tomando uno y es la suma del ultimo dia de venta

Esos son ejemplos, no miré tu base de datos, igualmente creo que se entiende
Cualquier cosa pregunta.

Saludos

 :hola:
Lo siento pero estas mal Solcito  :P la cosa es mas o menos asi:

Para el dia o dias ke mas se vendio (pueden ser varios dias en caso de ke hayas vendido la misma cantidad maxima de $ en varias fechas o solo puedes obtener un dia en caso de ke en un solo dia hayas vendido el maximo monto de venta)
Código: Text
  1.  
  2. SELECT Fecha, Montovta FROM Ventas WHERE Montovta = (SELECT MAX(Montovta) AS SMonto FROM Ventas)
  3.  
  4.  

Para el dia o dias ke menos se vendio (pueden ser varios dias en caso de ke hayas vendido la misma cantidad minima de $ en varias fechas o solo puedes obtener un dia en caso de ke en un solo dia hayas vendido el minimo monto de venta)
Código: Text
  1.  
  2. SELECT Fecha, Montovta FROM Ventas WHERE Montovta = (SELECT MIN(Montovta) AS SMonto FROM Ventas)
  3.  
  4.  

Saludines  :hola:

Páginas: [1]