Kare | |
| 2007-03-06 06:58 - Respuestas: 9 - Tema nº: 2438549
Características: Windows XP Profesional, 512,p4,500,20.
Hola, tengo un problema con el comando shell,
el código es el siguiente:
Shell ("d:\formatos decontrol\EnviaMail.bat"), vbMaximizedFocus
si ejecuto el archivo EnviaMail.bat, desde el directorio \formatos decontrol de manera manual, todo está bien, pero cuando lo hago desde visual , no pasa nada y lo raro es que ya lo ejecutaba todo bien en otra ocasión, no se a que se deba.
alguien podria ayudarme por favor
?¿?¿?¿
| |
|
|
ebolo | |
|
Re: Problemas con comando shell-ayuda - 2007-03-06 09:32 - Respuesta 2
Hola kare, yo normalmente cuando uso sell lo igualo a una variable tipo long.
Encontré este método por internet que funciona muy bien.
Código:
' Declaramos variables api
Private Const STILL_ACTIVE = &H103
Private Declare Function OpenProcess Lib "kernel32" _
(ByVal dwDesiredAccess&, ByVal bInheritHandle&, ByVal dwProcessId&) _
As Long
Private Declare Function GetExitCodeProcess Lib "kernel32" _
(ByVal hProcess As Long, lpExitCode As Long) _
As Long
Private Sub Command2_Click()
Dim hShell As Long
Dim hProc As Long
Dim codExit As Long
Dim sCmd as String
sCmd="d:\formatos decontrol\EnviaMail.bat"
' ejecutar comando
hShell = Shell(Environ$("Comspec") & " /c " & sCmd, 3)
' esperar a que se complete el proceso
hProc = OpenProcess(PROCESS_QUERY_INFORMATION, False, hShell)
Do
GetExitCodeProcess hProc, codExit
DoEvents
Loop While codExit = STILL_ACTIVE
End Sub
Saludos.
| |
|
|
Kare | |
|
Re: Problemas con comando shell-ayuda - 2007-03-09 05:12 - Respuesta 3
Hola ebolo, de antemano gracias por tu ayuda, pero sabes que probé con el código que me pasaste y lo unico que pasa es que parpadea pero no me ejecuta la acción del archivo .bat, no se a que se deba.Porque si lo ejecuto directamente desde el explorador si hace lo que debiera. | |
|
|
ebolo | |
|
Re: Problemas con comando shell-ayuda - 2007-03-09 11:15 - Respuesta 4
Hola kare, perdona el código que yo uso es para lanzar comandos de DOS, no para ejecutar un bat.
En éste caso cómo lo has puesto está casi bien
Shell ("d:\formatos decontrol\EnviaMail.bat", vbMaximizedFocus)
se cierra el paréntesis después del focus.
Aunque también los puedes quitar si la función no la iguales a nada:
Shell "d:\formatos decontrol\EnviaMail.bat", vbMaximizedFocus
También puedes ponerle un pause en el bat para ver cuando se abre la ventado del DOS ver si se ejecutan las cosas ó te da un error y no te da tiempo a verlo.
Un saludo.
| |
|
|
Kare | |
|
Re: Problemas con comando shell-ayuda - 2007-03-09 11:50 - Respuesta 5
Gracias por tu respuesta y tu atención ebolo, precisamente es lo que hice y con la pausa si funcionó.
Oye no se si me pudieras ayudar con otros detalles, en este mismo sistema, estoy utilizando datareport para obtener reportes de la bdd, pero quiero en ese reporte tener cierta informació, por ejemplo quiero desplegar la información por el usuario "Juan", pero este yo capturarlo en un text1.text., etc, es decir quiero hacer determinado filtros.Para lo cual, lo unico que hago es configurar las propiedades del comando del dataenvironment y le agrego la consulta por ejemplo:
SELECT id, fecha, lider FROM tabla1 WHERE lider = ?
Yo quiero que ese ? sea reemplazado por el nombre que yo capture en el text1.text
pero ya le estuve buscando a ver de que manera podia hacerse pero ya nose por donde mas buscarle.
tambien probé con un datareport sin usar dataenvironment, todo mediante codigo, pero tengo dudas de como hacer una consulta cuando el dato por el que voy a filtrar es texto, como elk caso del text1.text, porque hago la consulta con numero y si funciona pero con texto me marca error y me dice que tengo pocos parametros, como que no está bien la consulta. Mira para explicarme mejor:
Private Sub Command1_Click()
Dim tel As Double
tel = 125263
Set rs = base.Execute("select * from Tabla1 where telefono =" & tel)
If rs.EOF = False Then
Set DataReport1.DataSource = rs
DataReport1.Show
End If
End Sub
con esta consulta si funciona, pero la quiero hacer para una cadena, es decir que la variable tel en vez de numero sea texto:
Dim tel As Double
nom = "maria"
Set rs = base.Execute("select * from Tabla1 where nombre=" & nom)
If rs.EOF = False Then
Set DataReport1.DataSource = rs
DataReport1.Show
End If
el error que me aparece con este codigo es el siguiente:
ODBC microsoft access driver too few parameters
Hay otro detalle, como estoy utilizando una bdd multiusuario, cuando despliego un reporte y posterior a esto trato de realizar otra operación por ejemplo dar de alta un registro en la bdd, me marca error debido a que la base de datos está siendo usada de manera exclusiva por mi máquina, esto me sucede cada vez que intento realizar una operación donde se utiliza la bdd una vez que desplegué un reporte, como que la base de datos se queda abierta; en este caso que podria hacer para cerrarla??
De antemano Gracias ebolo!! | |
|
|
|