PREGUNTAS CONTESTADAS - Visual Basic

 Hay un total de 3030 Preguntas.<<  >> 

    Pregunta:  61588 - COMO AJUSTAR EL TAMAÑO DE UNA IMAGEN EN UN PICTUREBOX
Autor:  itosh reyes
disculpen la molestia pero es qeu tengo est pequeño problema , ya intente con la funcion autosize pero lo que hace es que ajusta el picturebox al tamaño de la imagen y yo quiero lo contrario si alguien me pudiede ayudar se lo agradeceria mucho ya que es urgente
  Respuesta:  Carlos Arias
Bueno lo que puedes hacer es en ves de poner un picturebox pones una image y para ajustar la imagen al tamaño del objeto le cambias la propiedad Stretch a true

    Pregunta:  61616 - WEBBROWSER BOTON !
Autor:  Javier Compagnucci
Hola, estoy desrrollano una aplicacion con un webbrowser.

Necesito que desde un boton del formulario de visual basic, hacer click en un boton especifico de una pagina web.

Lo unico que encontre es este codigo:

HTML.Forms(0).submit

Pero a causa de que debo hacer click sobre un boron especifico, este codigo no me sirve.

El boton al cual le quiero hacer click tiene estas propiedades:

tag= IMPUT
Type= submit
Value= ->
Name=seite_change

Hay otro parecido que tiene estas propiedades:

tag= IMPUT
Type= submit
Value= <-
Name=seite_change
  Respuesta:  Javier
Encontre la respuesta a mi pregunta:

Este seria el codigo:

Webbrowser1.Document.NombreDelForm.NombreDelBoton.Click

Pero en la pagina que queria acceder los botones no tenian nombre pero si valor entonces realice la siguiente sentencia:

Para la primera pagina:

Private Sub Command2_Click()
Dim z As Integer
For z = 0 To WebBrowser1.Document.Forms(0).length - 1
If WebBrowser1.Document.Forms(0)(z).Value = "Buscar" Then
WebBrowser1.Document.Forms(0)(z).Click
End If
Next z
End Sub

Para las siguientes paginas cambia el boton:

Private Sub Command3_Click()
Dim z As Integer
For z = 0 To WebBrowser1.Document.Forms(0).length - 1
If WebBrowser1.Document.Forms(0)(z).Value = "->" Then
WebBrowser1.Document.Forms(0)(z).Click
End If
Next z
End Sub

    Pregunta:  62004 - DIBUJAR UN RECTANGULO EN PDF DESDE VISUAL BASIC
Autor:  Paola Campos
Hola chicos un favor estoy imprimiendo un pdf desde visual basic 6.0 solo que no se como hacer rectangulos para meter texto dentro del rectangulo desde vb6.0 y que se vea en el pdf supongo que algo con ocx podrian ayudarme Gracias y saludos
  Respuesta:  Mario Campos
Si pruebas imprimiento en una form comun y despues direccionas a una impresora virtual pdf??

    Pregunta:  62014 - PROBLEMAS CON LOS REPORTES EN BLANCO
Autor:  ISABEL TORRES HERNANDEZ
HOLA A TODOS ESPERO ME PUEDAN AYUDAR CON EL PROBLEMA QUE TENGO... HACE UNOS DIAS LLEVARON MI MAQUINA A REPARACION ES LA QE TENGO EN MI TRABAJO Y LE DESINSTALARON ALGUNOS PROGRAMAS QUE UTILIZO PARA LLEVAR EL CONTROL DE ALMACEN DICHA APLICACION LA ELABORO UNA PERSONA QUE LABORABA AQUI, BUENO EL PROBLEMA ES EL SIGUIENTE EL SISTEMA ME DEJA CAPTURAR DATOS YA SEA DE ENTRADA Y SALIDA EL DETALLE ES QUE NO ME ACTUALIZA MIS REPORTES CON LOS DATOS NUEVOS QUE INGRESO Y TAMPOCO PUEDO IMPRIMIR MIS NOTAS PORQUE ME APARECE LA HOJA COMPLETAMENTE EN BLANCO ANTES SI FUNCIONABA BIEN A QUE SE DEBE EL PROBLEMA SALUDOS ESPERO ME AYUDEN
  Respuesta:  PILAR B.
HOLA,

LO MISMO TIENES QUE ACTUALIZAR LOS INFORMES, ME PARECE QUE HAY UNA OPCIÓN DE ACTUALIZAR BASE DE DATOS O ALGO ASÍ...

    Pregunta:  62075 - VB CON SQL SERVER
Autor:  Javier Herrera
Hola tengo el siguiente problema al hacer mi ABM de una tabla clientes, estoy intentando programar en 3 capas (usuario, reglas de negocio, datos). Este código lo tenia funcionando con DAO y una base de access. Ahora lo he intentado pasar a ADO con SQL Server y lee la base de datos pero no Actualiza ni da de Alta

Public Sub GuardarDatos()
If rs.BOF And rs.EOF Then
rs.AddNew
Else
' rs.edit '*****aqui no se que método usar para editar
End If
rs!NroCliente = ClienteEnUso.NroCliente
rs!Nombre = ClienteEnUso.Nombre
rs.Update
End Sub

Anteriormente he declarado estas variables en este modulo de clase , lee la tabla captura los datos en los textbox del formulario de la interfaz de usuario) pero cuando quiero actualizar no lo hace.

Private ClienteEnUso As TipoCliente
Private flgEsNuevo As Boolean
Private DB As New Connection
Private rs As New Recordset

Desde ya muchas gracias por contestar.
Saludos
Javier
  Respuesta:  David Enriquez
En un Modulo crear una funcion con el siguiente codigo

Function Conectar()
Dim provedor, servidor, database, Usuario, contraseña As String
provedor = "SQLOLEDB"
servidor = ServidorX
database = "BaseX"
usuario = "UsuarioX"
contraseña = "PasswordX"


Set oDb = New ADODB.Connection
With oDb
.Provider = provedor
.Properties("User ID").Value = Usuario
.Properties("Password").Value = contraseña
.Properties("Initial Catalog").Value = database
.Properties("Data Source").Value = servidor
End With

' oDb.Open
'Verifico la conexion, por si las dudas
If oDb.State <> adStateOpen Then
' MsgBox "No se puede generar la conexion SQL, verifique que los datos sean correctos", vbInformation
' Exit Sub
'Reabro la conexión
On Error Resume Next
oDb.Open
varx = oDb.State
If varx = 0 Then
MsgBox "Los datos de la conexion son incorrectos", vbCritical, "Error"
Bandera = 1
' Exit Sub
Else
Bandera = 0
End If
End If

End Function

***********Ya en tu form y en el boton Guardar iria esto:

Dim IDPer As Integer
Dim ApPat, ApMat, Nombres, Auxiliar1, Auxiliar2, Auxiliar3 As String

On Error Resume Next ' Inicializa el controlador de error.

If Bandera = 0 Then

ApPat = Text1.Text
ApMat = Text2.Text
Nombres = Text3.Text
Auxiliar1 = Text4.Text
Auxiliar2 = Text5.Text
Auxiliar3 = Text6.Text

If Nombres = "" Then
MsgBox "Debe ingresar por lo menos el nombre para dar de alta un usuario", vbCritical, EXE
Exit Sub
Else
'Hacer el proceso de Guardar nuevo registro
IDPer = Ultimo("PERSONAL", "ID_PERSONAL")

Campos = "ID_PERSONAL,APELLIDO1,APELLIDO2,NOMBRE,AUX1,AUX2,AUX3"
Registros = "" & IDPer & ",'" & ApPat & "','" & ApMat & "','" & Nombres & "'," _
& " '" & Auxiliar1 & "','" & Auxiliar2 & "','" & Auxiliar3 & "'"

SQLAddUser = "INSERT INTO PERSONAL" _
& " (" & Campos & ")VALUES" _
& " (" & Registros & ")"

oDb.Execute (SQLAddUser)

Text1.Text = Clear
Text2.Text = Clear
Text3.Text = Clear
Text4.Text = Clear
Text5.Text = Clear
Text6.Text = Clear

X = MuestraPersonal("PERSONAL", Grid)

MsgBox "Se ha registrado nuevo personal correctamente", vbInformation, EXE

End If

Else
Text1.Text = Clear
Text2.Text = Clear
Text3.Text = Clear
Text4.Text = Clear
Text5.Text = Clear
Text6.Text = Clear
Command1.Caption = "&Guardar"
Bandera = 0
Command2.Enabled = False
Text1.SetFocus
End If
Combo1.Text = Clear

Err.Clear
' Comprueba el error, después muestra un mensaje.
If Err.Number <> 0 Then
Msj = "Error # " & Str(Err.Number) & " fue generado por " _
& Err.Source & Chr(13) & Err.Description
MsgBox Msj, , "Error", Err.HelpFile, Err.HelpContext
End If

**************Y para actualizar iria esto

On Error Resume Next
'Previo a esto yo le puse un procedimiento que al hacer doble clic sobre un registro del Grid se me llenen los datos en
'los controles...mas abajo viene....
IdPerX = Grid.Text 'lo que tengan seleccionado en el grid se actualizara

ApPat = Text1.Text
ApMat = Text2.Text
Nombres = Text3.Text
Auxiliar1 = Text4.Text
Auxiliar2 = Text5.Text
Auxiliar3 = Text6.Text

If Nombres = "" Then
MsgBox "Debe ingresar por lo menos el nombre para dar de alta un usuario", vbCritical, EXE
Exit Sub
Else
End If
Campos = "ID_PERSONAL,APELLIDO1,APELLIDO2,NOMBRE,AUX1,AUX2,AUX3"
Registros = "" & IDPer & ",'" & ApPat & "','" & ApMat & "','" & Nombres & "'," _
& " '" & Auxiliar1 & "','" & Auxiliar2 & "','" & Auxiliar3 & "'"

If IdPerX <> "" Then
pregunta = MsgBox("¿Desea actualizar el registro seleccionado?", vbYesNo, EXE)
If pregunta = 6 Then
SQL = ""
SQL = "UPDATE PERSONAL SET APELLIDO1='" & ApPat & "',APELLIDO2='" & ApMat & "'," _
& " NOMBRE='" & Nombres & "',AUX1='" & Auxiliar1 & "',AUX2='" & Auxiliar2 & "'," _
& " AUX3='" & Auxiliar3 & "' WHERE ID_PERSONAL=" & IdPerX & ""
oDb.Execute (SQL)
MsgBox "El registro se ha Actualizado", vbInformation, EXE
Unload Me
Me.Show
Else
End If
Else
End If

Err.Clear
' Comprueba el error, después muestra un mensaje.
If Err.Number <> 0 Then
Msj = "Error # " & Str(Err.Number) & " fue generado por " _
& Err.Source & Chr(13) & Err.Description
MsgBox Msj, , "Error", Err.HelpFile, Err.HelpContext
End If


Procedimiento en el evento doble clic del Grid

Private Sub Grid_DblClick()

On Error Resume Next
Command2.Enabled = True
Command1.Caption = "Limpiar"
Bandera = 1
Text1.SetFocus
IdPerX = Grid.Text

SQL = ""
SQL = "SELECT * FROM PERSONAL WHERE ID_PERSONAL=" & IdPerX & ""

Set RST = Nothing
Set RST = New ADODB.Recordset
RST.CursorLocation = adUseClient

With RST
.ActiveConnection = oDb
.LockType = adLockOptimistic
.CursorType = adOpenDynamic
.Source = SQL
.Open
End With

ren = RST.RecordCount
If ren > 0 Then
With RST
Text1.Text = RST(1)
Text2.Text = RST(2)
Text3.Text = RST(3)
Text4.Text = RST(4)
Text5.Text = RST(5)
Text6.Text = RST(6)
End With
RST.Close
Else
'ENTRY1 = "" & vbTab & ""
End If

Err.Clear
' Comprueba el error, después muestra un mensaje.
If Err.Number <> 0 Then
Msj = "Error # " & Str(Err.Number) & " fue generado por " _
& Err.Source & Chr(13) & Err.Description
MsgBox Msj, , "Error", Err.HelpFile, Err.HelpContext
End If

End Sub

Espero te sirva saludos...

    Pregunta:  62203 - ESCRIBIR EVENTO EXISTENTE DE EXCEL DESDE VISUAL BASIC
Autor:  Jordi Casadesús Tomàs
Hola , a ver si me pudierais decir como escribir desde Visual Basic 6(Como si fuera una macro escrita desde VB6 a excel) un evento existente a excel desde VB 6.
He encontrado como pasar macros desde VB6 a Excel, Pero eventos no lo he encontrado y supongo que tiene que ser parecido solo que no se encontrarlo. GRACIAS
(no se si me he explicado bien... ¿?)
  Respuesta:  Jordi Casadesús
Soy yo mismo, :-). He encontrrado (en parte) la solución...
sub funcion()

..... inicio objetos de excel
'este es el evento a passar
strEventoHoja="Private Sub Worksheet_SelectionChange(ByVal Target As Range)" & Chr(13) _
& "msgbox " & Chr(34) & "Selection change" & Chr(34) & Chr(13) _
& "End Sub"

'vCont es la hoja donde se pondra el evento
'Ojo que si vCont es 1 entonces son los eventos del libro, no de la hoja y
'estos varian
'La solución anteriror ....
vfExcel.xLibro.VBProject.VBComponents(vCont).codemodule.addfromstring StrEvento

end sub

Pero ahora me ha salido otro problemilla, que cuando cierro Excel no se me guardan dichos eventos.
Las macros si se guardan en el modulo, pero los eventos no se quedan guardados ni en la hoja ni en el libro.Si alguien supiera como hacerlo....GRACIAS.si no, espero poderme contestar yo dentro de poco,jejeje

    Pregunta:  62280 - LLAMADAS A FUNCIONES DENTRO DE UNA DLL
Autor:  Juan Antonio Macareno Palacios
Para los expertos en visual, aqui expongo mi problema, espero me orienten en los errores
que esto cometiendo, gracias.

Me mandaron una libreria (sgenc32.dll) y junto con ella me mandaron el codigo para accesar
via Visual Basic que es el siguiente:

' Definiciones VB
' Estructura anterior
Public Type registro_CURP
curp As String * 19
archivokey As String * 256
password As String * 256
End Type

' Estructura actual (Generica)
Public Type registro_CURPG
curp As String * 19
archivokey As String * 256
archivocer As String * 256
password As String * 256
End Type

' Funciones anteriores
Declare Function BuscaCurps Lib "sgenc32" Alias "_BuscaCurps@8" (ByVal strArchOrig As String, ByRef CURPS() As registro_CURP) As Long
Declare Function GeneraFirmaDigital Lib "sgenc32" Alias "_GeneraFirmaDigital@8" (ByVal strArchOrig As String, ByRef CURPS() As registro_CURP) As Long

' Funciones actuales (Genericas)
Declare Function BuscaCurpsG Lib "sgenc32" Alias "_BuscaCurpsG@12" (ByVal strArchOrig As String, ByVal tipo As Long, ByRef CURPS() As registro_CURPG) As Long
Declare Function GeneraFirmaDigitalG Lib "sgenc32" Alias "_GeneraFirmaDigitalG@12" (ByVal strArchOrig As String, ByVal tipo As Long, ByRef CURPS() As registro_CURPG) As Long

Nuevos Códigos de Error:

10 = Tipo de documento a firmar no valido
11 = No se pudo leer el certificado
12 = Certificado caduco.
13 = El archivo contiene más de un registro 201.

Donde tipo = Tipo de documento a firmar

0 (cero) = PEDIMENTOS
1 = ENCARGOS
2 = AVISOs DE TRANSFERENCIA

Genero una estructura llamada MCURPG de la siguiente manera:

Public MCURPG(0 To 9) As registro_CURPG

luego, cuando hago la llamada a la libreria escribo el siguiente codigo para recibir un resultado de respuesta o de "estado" sobre la llamada (status).

status = BuscaCurpsG(ByVal mstrArchOrig, ByVal mtipo, MCURPG)

Donde status me regresa un 0 y esto se refiere a que hubo exito en la llamada de la libreria, para esto compruebo con un print si en la estructura viene el dato de la cupr
en esta forma:

Print status, MCURPG(0).curp

y la estructura MCURPG(0).curp si trajo un dato o recibio un dato de la libreria sgenc32.dll, Hasta aqui todo esta correcto, el siguiente paso es volver a accesar a la libreria y enviar los siguientes datos:

MCURPG(0).archivocer = "c: mpdavs.cer"
MCURPG(0).archivokey = "C:TMPDAVS.key"
MCURPG(0).password = "davsh02"

firmadig = GeneraFirmaDigitalG(ByVal mstrArchOrig, ByVal mtipo, MCURPG)

Aqui es donde comienza el problema, porque firmadig es la variable que recibo con el estado de la llamada a la libreria, y siempre me manda el codigo 11 (no se pudo leer el certificado).

Por lo que yo pienso que no estoy enviando bien la estructura a la libreria con la informacion que requiere para generar la firma digital.

Espero poderme explicar cual es mi situacion y gracias por sus prontas respuestas.

Saludos.
  Respuesta:  FTanori .
Para utilizar las funciones "G" la estructura "G" debes indicar el Certificado

MCURPG(0).archivocer = "c: mpdavs.cer"
MCURPG(0).archivokey = "C:TMPDAVS.key"
MCURPG(0).archivocer = "C:TMPDAVS.cer" ' <=== Incluir Certificado
MCURPG(0).password = "davsh02"
==============================================================
  Respuesta:  Juan Antonio Macareno Palacios.
Al fin, problema solucionado, genere un programa externo para que sea llamado desde visual fox con parametros, esto es...

nombredelprograma.exe "parametroarchivo|parametrocertificado|parametroarchivokey|parametroclave"

y listo, ya esta en funcionamiento.

Saludos

    Pregunta:  62509 - DUDA SOBRE COMPORTAMIENTO DE DOUBLES Y SINGLES
Autor:  Martín Andrade Rentería
tengo un grid donde se vacían cantidades con decimales, el programa suma estas cantidades de una columna, pero en un momento ciertos números provocan que se aumenten decimales de más, mis cantidades son de solo 2 dígitos decimales por lo que se me hace extraño que el resultado tenga 5 decimales, para reproducir este comportamiento se puede usar el siguiente código:

'Empieza->
Dim i As Integer
Dim total As Single
Dim values(28) As String

values(0) = "4.3"
values(1) = "0.01"
values(2) = "0.01"
For i = 0 To 2
total = total + Val(Format(values(i)))
Next

MsgBox total
'<-termina
  Respuesta:  Carlos Arias
Bueno la opcion seria que redondeares el total que daria de la siguiente manera:

Dim i As Integer
Dim total As Single
Dim values(28) As String

values(0) = 4.3
values(1) = 0.01
values(2) = 0.01
For i = 0 To 2
total = total + values(i)
Next
MsgBox Round(total, 2)

    Pregunta:  62517 - REDONDEAR DECIMALES AL ENTERO SUPERIOR EN VISUAL BASIC 6
Autor:  Adrian Garcia
_Que tal? espero algun experto me pueda proponer alguna solucion puesto que soy estudiante aun y estoy tratando de extender mis conosimientos.

Trato de redondear cualquier numero decimal al entero superior ejemplo:
.1 a 1
10.3 a 11
5.5 a 6
cualquiera que sea q sea mi numero pues me han dado solusion con msgbox pero solo funsiona para numeros en espesificos.
Por su atencion gracias
  Respuesta:  Pedro M
Hola.

No se si a la fecha ya has solucuciondao tu problema; lo que yo haría seria hacer un convert(int, 10.3) + 1 = 11.

Espero te sirva.

Saludos.

    Pregunta:  62605 - NO PUEDO ELIMINAR UN CONTROL CREADO DINAMICAMENTE
Autor:  Ezequiel
Hola, tengo el siguiente codigo

Dim CheckBox As CheckBox

Private Sub Command1_Click()
Me.Controls.Remove (CheckBox)
End Sub

Private Sub Form_Load()
Dim strNameCheckBox As String
strNameCheckBox = "chkCuota_" & 1
Set CheckBox = Me.Controls.Add("VB.CheckBox", strNameCheckBox)
End Sub

Cuando quiero eliminar con remove el control me da error 729 "Controls.remove solo puede quitar controles agregfados con Control.add".
Basicamente lo que necesito es segun eleccion del usuario crear una serie de controles y luego si cambia su seleccion tengo que borrarlos y volver a crearlos.. Muchas gracias
  Respuesta:  Laubrisa Orellana
Hola Ezequiel

yo para remover objetos creados en tiempo de ejecucion utilizo
Unload (<objeto>), si no te funciona escribeme y te envio mi codigo donde genero formularios con objetos y eventos para controlar estos objetos, de hecho he creado dos tipos de formularios uno con objetos especificos para tablas dinamicas y otro donde a partir de un formulario vacio creo y ubico objetos los cuales tienen eventos de click, enter y foco (pre y post)

|<  <<  293 294 295 296 297 298 299 300 301 302 303  >>  >|