cuestiones access1

53
MANDAR CÓDIGOS DIRECTAMENTE A LA IMPRESORA . TEMA DE LOS CÓDIGOS DE BARRAS que tipo de fuentes de codigo de barras tienes antonio? Antonio Ruiz Arjona escribió en mensaje <[email protected] >... >Para mandar códigos directamente a la impresora, abre el puerto de la >impresora como si fuera un fichero e imprime directamente en el, para el >tema de los códigos de barras hay unas fuentes que te permiten hacerlo, si >las necesitas te las paso por e_mail > >-------------------------------------------------------------- >[email protected] >http://www.redestb.es/personal/a_ruiz >-------------------------------------------------------------- >Gonzalo escribió en mensaje <[email protected] >... >>Hola amigos >> >> Estoy haciendo un programa en access 97 para gestionar una TPV. >>Resulta que para abrir el cajón de la tpv parece ser que hay que mandar >>un código de escape a la impresora, pero no se como hacerlo. Según el >>manual de la impresora el código para abrir el cajón es ESC p n t1 t2, >>donde n es un número entre el 1 y el 48 y t1 y t2 son tiempos en >>milisegundos (????) Alguien puede decirme como mandar este codigo a la >>impresora? >> >> También quiero imprimir códigos de barras (desde otra impresora, >>claro) Sabeís como se hace? Muchas gracias. > COMO HACER PARA QUE LOS FORMULARIOS SALGAN >MAXIMIZADOS Mejor, añade esta línea en los eventos Form_Load y Form_Activate (cargar y activar del formulario): DoCmd.Maximize Saludos, Fernando Durán bOnd, jAmEs 007 escribió en mensaje <[email protected] >... >ALguien me puede decir como hacer para que los formularios salgan >maximizados >siempre, ya que me salen como quieren. Tengo Access 97. > > Gracias, me urge. > BASE DE DATOS GENERE, DE MANERA AUTOMÁTICA, UN INFORME CADA >HORA. On Fri, 9 Jan 1998 00:30:59 +0100, "Javier" <[email protected] > wrote:

Upload: resareyes

Post on 30-Jul-2015

257 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Cuestiones Access1

MANDAR CÓDIGOS DIRECTAMENTE A LA IMPRESORA .TEMA DE LOS CÓDIGOS DE BARRAS

que tipo de fuentes de codigo de barras tienes antonio?

Antonio Ruiz Arjona escribió en mensaje<[email protected]>...>Para mandar códigos directamente a la impresora, abre el puerto de la>impresora como si fuera un fichero e imprime directamente en el, para el>tema de los códigos de barras hay unas fuentes que te permiten hacerlo, si>las necesitas te las paso por e_mail>>-------------------------------------------------------------->[email protected]>http://www.redestb.es/personal/a_ruiz>-------------------------------------------------------------->Gonzalo escribió en mensaje <[email protected]>...>>Hola amigos>>>> Estoy haciendo un programa en access 97 para gestionar una TPV.>>Resulta que para abrir el cajón de la tpv parece ser que hay que mandar>>un código de escape a la impresora, pero no se como hacerlo. Según el>>manual de la impresora el código para abrir el cajón es ESC p n t1 t2,>>donde n es un número entre el 1 y el 48 y t1 y t2 son tiempos en>>milisegundos (????) Alguien puede decirme como mandar este codigo a la>>impresora?>>>> También quiero imprimir códigos de barras (desde otra impresora,>>claro) Sabeís como se hace? Muchas gracias.>

COMO HACER PARA QUE LOS FORMULARIOS SALGAN>MAXIMIZADOS

Mejor, añade esta línea en los eventos Form_Load y Form_Activate (cargar yactivar del formulario):DoCmd.MaximizeSaludos,Fernando DuránbOnd, jAmEs 007 escribió en mensaje <[email protected]>...>ALguien me puede decir como hacer para que los formularios salgan>maximizados>siempre, ya que me salen como quieren. Tengo Access 97.>> Gracias, me urge.>BASE DE DATOS GENERE, DE MANERA AUTOMÁTICA, UN INFORME CADA>HORA.

On Fri, 9 Jan 1998 00:30:59 +0100, "Javier" <[email protected]>wrote:

>Hola a todos.>necesito que una base de datos genere, de manera automática, un informe cada>hora. ¿Alguien me echa un cable?.>

Hola Javier, deberías usar el evento 'Incremento decronómetro'. En un formulario, este evento te permite ejecutar unafunción a intervalos regulares de tiempo.

Page 2: Cuestiones Access1

Saludos.

---Fermín Bernaus BerraondoDepto. de InformáticaSAMMIC, S.A.Azpeitia (Gipuzkoa)Spain

E-mail: [email protected]: http://www.sammic.com

BASES DE DATOS QUEDAN MARCADAS COMO ABIERTAS EN ACCESO EXCLUSIVO DE FORMA QUE, A TRAVÉS DE LA RED, NO ME DEJA ABRIR LAS TABLAS

> Tengo una aplicación en visual basic distribuida en varios PCs>de la red, que hace uso de una base de datos local en cada uno de los>PCs.>> Por alguna razón, a veces esas bases de datos quedan marcadas>como abiertas en acceso exclusivo de forma que, a través de la red, no>me deja abrir las tablas (las cuales tengo vinculadas desde mi PC a>cada una de las tablas de los PCs de la red) de una de esas bases de>datos, aún cuando la aplicación está cerrada ya. Lo curioso es que, si>borro la tabla vinculada (adjuntada) y la vuelvo a vincular, entonces>ya me deja abrirlas.>> ¿Alguien sabe si es un bug de Microsoft, o qué es lo que hago>mal?>> Gracias.Hola Fermín, a mi me ocurría algo parecido y observé que el archivo debloqueo (el ficheroLDB que Access genera cuando se ejecuta), no desaparecíaal finalizar la ejecución. Solución: reinstalar Access :-((. Los motivos deque ésto ocurra casi siempre apuntan al registro de Win 95. Busca la clavesiguiente y comprueba los valores por defecto de la lista ( de la ayuda deAccess, busca SetOption).

\HKEY_LOCAL_MACHINES\Software\Microsoft\Jet\3.5\Engines\Jet 3.5.FlushTransactionTimeout=500LockDelay=100LockRetry=20MaxBufferSize= 0MaxLocksPerFile= 9500PageTimeout=5000Threads=3UserCommitSync=YesImplicitCommitSync=NoExclusiveAsyncDelay=2000SharedAsyncDelay=0Te adjunto tres funciones para comprobar vínculos de tablas (TestLink),Refrescar vínculo de una tabla (RefreshTableLink) y refrescar todos losvínculos (RefreshAllLinks), de "los Secretos de Access97" de Anaya. (un buenlibro me parece a mi). Espero que te sirva. Saludos Jom.

Page 3: Cuestiones Access1

MICROSOFT: OFFICE DEVELOPER'S EDITION (ODE)

EL ODE vale una 70.000 Pts + I.V.A.

Skar escribió en mensaje <[email protected]>...>Yo utiliso el ODE y hasta donde se solo viene en Ingles, si necesitas ayuda>avisame>>Skar>[email protected]>www.erols.com/quisbert/>>Juan Carlos Ruiz Ruiz wrote in message><[email protected]>...>>Me gustaría que al guien me dijera si el programa Microsoft: Office>>Developer's Edition (ODE), esta en ingles o si también lo hay en>castellano.>>Si conocierais el precio actual (orientativo) decírmelo.>>

GENERAR UNA CONSULTA QUE MEDIERA LOS CUMPLEAÑOS DE LOS SOCIOS ENTRE DOS FECHAS.

Yo lo tengo preparado para saber los cumpleaños de los alumnos en la semanade la fecha en que estemos. el resultado tiene 3 campos: Alumno, fecha delcumpleaños y años que cumple. te mando el código SQL:

SELECT DISTINCTROW [Apellidos] & ", " & [nombre] AS Alumno, "El " &Format(DateSerial(Year([fecha nacimiento])+[Años cumplidos],Month([fechanacimiento]),Day([fecha nacimiento])),"dddd") & ", " & Format([fechanacimiento],"dd"" de ""mmmm") AS [Día del cumpleaños],Year(Date())-Year([fecha nacimiento]) AS [Años cumplidos]FROM alumnosWHERE (((DatePart("ww",DateSerial(Year(Date()),Month([fechanacimiento]),Day([fecha nacimiento]))))=DatePart("ww",Date())))ORDER BY Format([Fecha Nacimiento],"mm-dd");

Espero que te sirva

--Miguel Angel (ZUMÁRRAGA)[email protected] escribió en mensaje <[email protected]>...Después de dos dias de dolores de cabeza intentando hacer lo que cuentoa continuación lo escrib aquí con la esperanza de que una mente lúcida meeche unamano.

Tengo una tabla denominada "socios" que incluye un campo[Fecha_nacimiento]. Lo que me gustaría hacer es generar una consulta que mediera los CUMPLEAÑOS de los socios entre dos fechas.

Parece fácil, no?. Pues todo lo contrario. Parece que la mejor opción es

select * from socios WHERE format([fecha_nacimiento],"mm/dd") BETWEENfecha1 AND fecha2

pero NO FUNCIONA!

otras opciones pueden ser:

query ="DatePart(" & """" & "y" & """" & ",Format([fecha

Page 4: Cuestiones Access1

nacimiento],'mm/dd')) between " & DatePart ('y', Now()) & " AND " &DatePart("""y""", Now() + Me![CUMPLE_DIAS])

miSQL= "select * from socios WHERE " & query

Pues tampoco funciona!y ya me estoy volviendo loco!!! Hay alguien que me pueda echar unaMANOOOOOOO???

Gracias por adelantado.

mailto:[email protected].

IMPRIMIR EN COLUMNAS

Genérate un informe sencillo, tipo listado, y en Archivo/Configurar páginale dices que quieres imprimir a 4 columnas.Fácil, no?

Javier

BigBen<[email protected] escribió en mensaje <[email protected]>...

Hola Grupo: Mi problema es el siguiente, deseo imprimir las fechas contendidas en una tabla pero de la siguiente manera:

--------> (Durección de impresión)

12/1 25/1 02/2 20/2

28/2 03/3 14/3 29/3

10/4 30/4 15/5 01/6

...........etc.

Debo aclara que el nombre el campo siempre es el mismo, lo que no se como hacer es como hacer para que el puntero avance una posición e imprima el próximo registro.

Gracias

Big..

CONVERSION DE FECHAS

>Tengo un problema con unas tablas importadas.>Resulta que las tablas están sacadas de un sistema que me da en el campo>FECHA (numérico),>960115(aammdd).Siempre nos queda utilizar las funciones utilizadas en las hojas de cálculo:=SerieFecha(Medio([Campo];1;2);Medio([Campo];3;2);Medio([Campo];5;2))

SaludosDesde un formulario en el cual se imponen las condiciones de un filtro,con un boton de comando intento exportar una consulta con talescondiciones, la secuencia que realizo es la siguiente:abrir consulta, aplicar filtro,transferir texto,cerrar consulta.' num_jor = contenido de textbox del formulariostrval = "[id_jornada]=" & num_jorDoCmd.OpenQuery "c_exportar", acNormal, acReadOnlyDoCmd.ApplyFilter "", "[C_exportar]![id_jornada]=" & num_jor

Page 5: Cuestiones Access1

strval = "A:RESULT.TXT"DoCmd.TransferText acExportDelim, "C_exportar Especificación deexportación", "C_exportar", strval, FalseDoCmd.Close acQuery, "C_exportar"

La consulta se abre y el filtro le realiza correctamente, pero altransferir a un archivo texto, pasa del filtro y guarda todos losregistros.¿ Como puedo transferir solo los registros seleccionados?.Lo mismo me ocurre si intento realizar un gráfico a partir de unaconsulta.

DONDE ENCONTRAR FUNCIONES (P.EJ.PASO NUMERO A LETRAS)

Puedes encontrar la utilidad que dices, y muchas cosas ms, en:http://www.abaforum.es/tomasb/access.htm (Informacin procedente de mensajes de Eva y Jess Velasco en Nov./97).

CALCULAR LA DIFERENCIA ENTRE DOS FECHAS

Claro, con DateDiff cualquiera, ¿no? Pues no. Probemos con estas dos fechas: 9-Dic-96 y 1-Mar-97. DateDiff nos dirá que 1 año si preguntamos por los años, 3 meses si le preguntamos los meses, y si queremos saber los dias nos dice que -8 (en negativo). Una persona humana, después de pensar unos segundos, diría que hay 2 meses, y 23 dias entre las dos fechas (si es informático, también dirá "cero años"). Y si fuera entre el 95 y 96, un dia mas por bisiesto.Con la siguiente función tienes el problema resuelto. Eso sí, tienes que llamarla por separado para obtener cada una de las partes de la respuesta:

perendat(fecha1, fecha2, "a") para saber los años perendat(fecha1, fecha2, "m") para saber los meses perendat(fecha1, fecha2, "d") para saber los dias

Si eres un poco manitas con VB, puedes modificarla y pasarle un tipo definido por tí para tenerlo todo de una tacada.

Public Function perendat(fecha1, fecha2, tipo)' tipo: a=años, m=meses, d=diasDim ca As Long, cm As Long, cd As LongDim f1 As Variant, f2 As VariantIf fecha1 < fecha2 Thenf1 = fecha1: f2 = fecha2Elsef2 = fecha1: f1 = fecha2End Ifca = DateDiff("yyyy", f1, f2)If Format(f2, "mmdd") < Format(f1, "mmdd") Thenca = ca - 1End Ifcm = DateDiff("m", f1, f2) - (ca * 12)cd = DateDiff("d", Format(f1, "dd"), Format(f2, "dd"))If cd < 0 Thencm = cm - 1cd = DateDiff("d", DateSerial(Year(f2), Month(f2) - 1, Day(f1)), f2)End IfSelect Case tipoCase "d"perendat = cdCase "m"perendat = cmCase "a"perendat = caEnd SelectEnd Function

Page 6: Cuestiones Access1

ESPERAR A QUE TERMINE UNA APLICACIÓN

Desde Access podemos arrancar otros programas con la función Shell. Hasta aquí no hay problema, solo que Access prosigue la secuencia de comandos sin esperar a que termine el programa arrancado, lo cual puede ser un verdadero problema en algunas ocasiones. Por ejemplo, si la misión del programa llamado es generar un fichero que a continuación queremos importar. Con ésta función, Access 2.0 (más abajo está la solución para 7.0 y 97) esperará a que finalice el programa llamado:

Declare Function ws_GetModuleUsage Lib "kernel" Alias "GetModuleUsage" (ByVal FileName$) As Integer

(La linea anterior debe incluirse en la sección Declaraciones del módulo, y es UNA sola línea)

Function WaitShell(AppName$, mode)Dim hMod As Integer,AppRoot As StringAppRoot = Left$(AppName$, InStr(AppName$ & " ", " "))hMod = Shell(AppName$, mode)If (hMod > 32) ThenWhile (ws_GetModuleUsage(hMod))DoEventsWendElseMsgBox "No se pudo arrancar " & AppRootEnd IfEnd Function

Ahora, todo lo que hay que hacer es llamar a la función WaitShell en lugar de Shell.

El ejemplo anterior es para 2.0. Con Access 7.0 y 97, la sección Declaraciones sería:

Private Const SYNCHRONIZE = &H100000Private Const INFINITE = &HFFFFDeclare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, _ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As LongDeclare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As LongDeclare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, _ByVal dwMilliseconds As Long) As Long

Y la función WaitShell, además de la Sub WaitForTerm:

Function WaitShell(AppName$, mode)Dim hMod As Long, AppRoot As StringAppRoot = Left$(AppName$, InStr(AppName$ & " ", " "))hMod = Shell(AppName$, mode)If hMod <> 0 ThenWaitForTerm hModElseMsgBox "No se pudo arrancar " & AppRootEnd IfEnd Function

Sub WaitForTerm(pid&)Dim phnd&phnd = OpenProcess(SYNCHRONIZE, 0, pid)If phnd <> 0 ThenCall WaitForSingleObject(phnd, INFINITE)Call CloseHandle(phnd)End IfEnd Sub

PONLE SONIDOS A TU APLICACIÓN

En Access 2.0, incluye estas dos lineas en la sección Declaraciones de un módulo:

Page 7: Cuestiones Access1

Declare Function sndPlaySound Lib "mmsystem" (ByVal lpszSoundName As String, ByVal uFlags As Integer) As IntegerDeclare Function mciSendString Lib "mmsystem" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Integer, ByVal hWndCallback As Integer) As Long

Y también la siguiente función:

Function myPlaySound (fichero, tipo)Dim l As LongSelect Case tipoCase "wav"l = sndPlaySound(fichero, 1)Case "mid"l = mciSendString("close mymid", "", 0, 0) ' detiene mymid si estaba en playl = mciSendString("open " & fichero & " type sequencer alias mymid" & Chr(0), "", 0, 0)l = mciSendString("play mymid", "", 0, 0)End SelectEnd Function

Para reproducir un sonido, solo tienes que llamar a la función myPlaySound pasandole el path completo del fichero (o el nombre de un sonido del sistema) y el tipo, wav o mid.

Para Access 7.0 y 97, las Declaraciones cambian muy poco, pero lo suficiente para tener que modificar el módulo:

Declare Function sndPlaySound Lib "winmm" Alias "sndPlaySoundA" (ByVal filename As String, ByVal snd_async As Long) As LongDeclare Function mciSendString Lib "winmm" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As Any, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long

La función myPlaySound no hay que modificarla.

CAMBIAR EL TÍTULO DE LA APLICACIÓN

En Access 2.0 también puedes cambiar el título de la ventana principal. Primero incluye estas lineas en la sección Declaraciones de un módulo:

Declare Function FindWindow% Lib "User" (ByVal lpClassName As Any, ByVal lpWindowName As Any)Declare Sub SetWindowText Lib "User" (ByVal hWnd%, ByVal lpString$)

Y también la siguiente función:

Function SetCaption (texto)Dim hWnd%hWnd% = FindWindow%("OMain", 0&)Call SetWindowText(hWnd%, texto)End Function

Para cambiar el título de "Microsoft Access" a "Mi aplicación", puedes llamar a la función, desde código o desde una macro:

SetCaption("Mi aplicación")

PAGINAS WEB SOBRE ACCESS

Return-Path: <[email protected]>From: "Javier Moncada" <[email protected]>To: "ricardo" <[email protected]>Ahí va eso Ricardo, la recopilación de Links es obra de Jordi Mandri yManuel Rojo-García Calderón.

Hola aqui os doy otros Links de Access interesantes:Portugues:http://www.forumaccess.com/Frances:http://www.databaseconcept.com/

Page 8: Cuestiones Access1

http://www.eu.microsoft.com/france/support/produits/office/Access/Ingles:http://www.geocities.com/SiliconValley/Park/7848/access.htmhttp://www.colhill.demon.co.uk/http://www.MOSHANNON.COM/http://www.caryp.com/http://www.ozemail.com.au/~animaliz/zsfree.htmhttp://www.pinpub.com/access/home.htmhttp://www.cobb.com/ima/http://easyweb.easynet.co.uk/~trevor/AccFAQ/http://www.aptitude.com/http://www.mcp.com/que/developer_expert/access97es/access97es.htmlhttp://165.247.202.56/msadp/http://www.foursquare.com/http://www.gfminc.com/accessto.htmhttp://enet.ca/Softoholic/ocxserver/free/Castellano:http://www.arrakis.es/~flopy/http://www.euita.upv.es/deleg/elven/access.htmhttp://www.geocities.com/SiliconValley/7158/index.htmlhttp://www.integrator.es/

INGLEShttp://www.we-do-access.com/information.htmlhttp://www.winsite.com/win3/access/http://www.pc-solutionsinc.com/lucasec.htmhttp://www.enteract.com/~jaysys/http://dbi-tech.com/download.htmhttp://www.accessmonitor.com/announce.htmlhttp://www.arrakis.es/~soria/ACCJUMBO.HTMhttp://www.intellex.net/~cierra/http://members.aol.com/tritecceg/index.htmlhttp://www.wdn.com/ems/lists/accessp.htmhttp://members.aol.com/TriTecCEG/software.htmlhttp://www.microsoft.com/access/work_infodb.htmhttp://rio.engr.washington.edu/~fray/msaccess.htmlhttp://odyssey.apana.org.au/~abrowne/homepage.htmlhttp://www.access-developer.com/http://www.cobb.com/ima/index.htmhttp://www.advisor.com/av.htmlhttp://207.212.50.51/main.hmxhttp://www.database2net.com/http://www.gr-fx.com/http://www.fmsinc.com/http://www.skandata.com/assets.htmlhttp://www.cm.cf.ac.uk/User/I.W.Aldridge/project/index.htmlhttp://www.btinternet.com/~markolus/accessf.htmhttp://www.wji.com/access/http://www.pdsconsulting.com/http://www.psu.edu/cac/training/outlines/access/access.htmlhttp://cygnus.cygnus.nb.ca/005/005-003.htmlESPAÑOLhttp://www.geocities.com/SiliconValley/1661/http://www.arrakis.es/~carlosval/http://www.micro-area.com/downloads/winlab32///index.htmlhttp://www.arrakis.es/~soria/http://www.abaforum.es/tomasb/http://personal.redestb.es/cratae/http://www.kwery.com/http://www.adaptasoft.com/products.htm

Page 9: Cuestiones Access1

Aqui te va, Private Sub Form_Load()Dim mydb As DatabaseDim thelog As RecordsetDim sProcDtTm As StringSet mydb = CurrentDbSet thelog = mydb.OpenRecordset("loguser")sProcDtTm = Format(DATE, "yyyy-mm-dd") & " " & Format(Time, "hh:mm:ss")With thelog.AddNew!UserName = WindowsUserName()!logdate = sProcDtTm.UpdateEnd Withmydb.CloseEnd Sub basicamente lo que hago es mantener un log de las personas que entran a mi base de datos entro el nombre y la fecha de entrada a una tabla llamada loguser. WindowsUsername() es una funcion que estoy llamando la cual puedes cambiar algo mas.

BUSCAR REGISTROS EN UN FORMULARIOSaludos a todo el grupoTengo el siguiente problema:Tengo un formulario basado en una tabla y quiero que al entrar en elformulario busque uno de los registros pero especificando 2 criterios.Exactamente los criterios son dos campos que contienen datos de otra tabla.Gracias de antemano.------------------------------Al final usé el siguiente código tal y como lo pongo:stLinkCriteria = "maquina= " & "forms![Gestión CambioHerramientas]![texto46]" & "and estacion=" & "forms![Gestión CambioHerramientas]![texto50]"

stDocName = "Gestión Cambio Herramientas"DoCmd.OpenForm stDocName, , , stLinkCriteria

Gracias por contestar.

NO DESPLAZAMIENTO ENCABEZADO Y PIE INFORME

Tengo un informe con Encabezado, Detalle y PieEl contenido del Encabezado y del Pie son fijossabeis como se puede ajustar para que el contenido del Pie se mantengasiempre en la misma posición sin desplazarse hacia arriba o abajo en funcióndel Detalle?Exactamente es para imprimir recibos normalizados, con el contenido centralde varias líneasGraciasJose Luis [email protected]

-------------------------

Pon el detalle como autoextenxible no, autocomprimible no

ACTUALIZAR CAMPO EN FUNCION DE OTRO CON FECHA

Hola grupo, tengo una tabla ej: FacturasClientes con varios campos entreellos uno FechaVencimiento y otro EstadoFactura

Page 10: Cuestiones Access1

Quiero que si el campo FechaVencimiento es igual o mayor a la fecha actualentonces el valor del campo EstadoFactura sea PagadoSe que es muy facil pero lo he intentado y no doy con elloSi alguien me puedo explicar como hacerlo y en el caso de que sea a travésde código le rogaría me indique en que propiedad del campo EstadoFacturadebo ponerloGracias de antemano

[email protected]

----------------------------------------Por lo que cuentas tienes dos formas de hacerlo:

En el evento al activar el registro del formulario pones:

if [Fecha vencimiento]>date() then[estadofactura]=pagadoend if

O creas una consulta de actualización que se ejecute al iniciar laaplicación que ponga el estadofactura a pagado cuando la fecha vencimientosea > que la fecha actual y el estado sea pendiente.

ACTIVAR BLOQUEO DE MAYUSCULAS MEDIANTE CODIGO

Hola amigos:

Alguien me podria deci como activar el bloqueo de mayusculas a traves de codigo?

Ejemplo AlActivarFormulario que queden las mayusculas bloqueadas.

Con la API GetKeyboardState puedes averiguar el estado de cada tecla, y conSetKeyboardState puedes cambiarlo.

En mi página hay un ejemplo para la tecla NumLock, solo tienes que utilizarel número de tecla de CapsLock (&H14) en vez del NumLock (&H90).Creo que se puede cambiar también el estado con keybd_event, pero esa no lahe probado.

--Saludos,Tomás Boixethttp://www.abaforum.es/tomasb

INSERTAR DATOS EN UNA TABLA SI ESTOS NO EXISTEN

Vereis, necesito buscar un dato en una tabla, sino se encontrase,automaticamente deberia buscarse en una segunda tabla y si tampoco seencontrara, deberia poder darse de alta un registro en esta segunda tabla.

Esto con Clipper y otros lenguajes de DOS no era complicado, pero soy nuevocon esto del Access y Vbasic.

---Para buscar si en datos existe en un campo de una tabla puedes utilizarla función DBÚSQ o DLOOKUP de Access (en la ayuda encontrarás cómoutilizarla y ejemplos.) Si no lo has encnotrado y debes darlo de alta puedesutilizar una sentencia SQL:

Page 11: Cuestiones Access1

dim sql as stringsql="INSERT INTO [Mitabla] (NombreCampo) VALUES ('MiValor');"docmd.runsql sql

COMILLAS EN CAMPOS ALFANUMERICOS

Alguien me podría decir pq me da error de sintaxi , le falta un operador¿No lo entiendo? Yo lo veo bien.Gracias de antemano.Cris.BaseEst.Filter = "BeClient = " & cliente & " and BeArt = " & articulo---

Ten en cuenta que si el campo es string se debe poner comilla simple (porejemplo):BaseEst.Filter = "BeClient = " & cliente & " and BeArt = ' " & articulo & "' '"

BASE DE DATOS DAÑADA

¡ Hola a todos !Mi problema es que una base de datos, en Access 97, se ha dañado. Pués alinterntar abrirla me dice que está dañada o que no es una base de datos.Entonces, he intentado repararla con la opción que trae el Access, y me dicelo mismo.Mi pregunta es: ¿ hay alguna otra manera de recuperar los datos ? ¿ Existealgún programa auxiliar que lo permita ?Gracias anticipadamente---

Busca en las páginas de microsoft una utilidad llamada JETCOMP.EXE (oJET97updt). ES una utilidad que permite reparar (a veces) bases de datos queno se reparan por el método normal.

Si no la encuentras dímelo y te la enviaré.

==========================H :- )=Neftalí --- Germ@n Esté[email protected]

Puedes intentar tambien los siguientes trucos para engañar al Access:1.- Renombra la base de datos y llevetela a otro directorio.S al intentar abrirla, no te funciona mira el paso 2.2.-Create otra base de datos en blanco (con un nombre distinto de la que note funciona),y desde esta importa todos los objetos que tengas en la basede datos dañada.

ABRIR Y CERRAR FORMULARIO EN UN TIEMPO X

Tengo terminada un aplicación y necesito poner la típica ventana depresentación que muestra los créditos del programa, la versión, etc. ypasados unos segundos se cierra para visualizar la aplicación.

La pregunta es ¿Como pedo indicar a access que pasados x segundos, secierre un formulario?

Page 12: Cuestiones Access1

---

Crea una variable global en el modulo de clase del formulario:Dim lSeg As Long

Ajusta las propiedades del formulario:

Intervalo del cronómetro a: 1000para incrementos en segundos y

Al cronómetro a: [Procedimiento de evento]

y escribe el procedimiento de evento según:

Private Sub Form_Timer()lSeg = lSeg + 1If lSeg >= 5 Then 'Para 5 segundos visibleDoCmd.CloseDoCmd.OpenForm "FormularioSiguiente"End IfEnd Sub

Ojo, si añades código al procedimiento de evento y tarda mas de un segundoen ejecutarse, el computo de tiempo será incorrecto

Un saludo

_____________________José Luis Martí[email protected]____Madrid (España)____

BASE DE DATOS CODIGOS POSTALES

Alguien recuerda donde puedo bajarme el programa "La estafeta" (Base de> datos de códigos postales ) la tenía pero no la encuentro

---

http://personal1.iddeo.es/ret000v3/estafeta/disco1.ziphttp://personal1.iddeo.es/ret000v3/estafeta/disco2.ziphttp://personal1.iddeo.es/ret000v3/estafeta/disco3.zip

Brutote <[email protected]> escribió en el mensaje de noticias

En correos te dan el cd con todos los codigos postales de España por 300pesetas. Yo lo tengo.

FUNCION DE RELLENO

Hola a todos, sabeis de alguna función capaz de cogerte una string yrellenartela por ejemplo con puntos el espacio sobrante a la derecha. esdecir por ejemplo:

Page 13: Cuestiones Access1

PEPE ..................................JOSE ANTONIO ................

---

Prueba con esta:

Function rellenaSC(p, l, c) As String'p es la cadena inicial'l la longitud a rellear'c caracter derellenoDim relleno As String, i As Integer

If Len(p) < l ThenFor i = 1 To l - Len(p)relleno = relleno & cNext iEnd IfrellenaSC = p & rellenoEnd Function

ARRANCAR WORD

Tengo un formulario con nombres de documentos de texto tipo "prueba.doc"

Me gustaría que pulsando sobre uno de ellos se abriera la aplicaciónWord precisamente por el documento seleccionado.

---Primera solución.Crea un boton y en el evento clik mete:

Dim x As Integerx = Shell("c:\msoffice\winword.exed:\trabajos\access\devolu~1\adev.doc", 1)

Segunda solución.Si te pasas a Access97 puedes hacerlo con un simple hipervínculo.

CERRAR ACCESS

Aunque parezca mentira, al intentar cerrar mi aplicación no lo consigo.He probado con docmd.quit y nada. También he probado con Alt+F4 y con la Xque hay en la esquina superior izquierda del Access. En lugar de cerrarse,se minimiza. La única manera que hay de cerrarlo es con Control+Alt+Supr,pero esto queda muy poco profesional. Alguien puede ayudarme?.

P.D.: Esto solo me ocurre con una aplicación. Las demás funcionanperfectamente.

Gracias por la ayuda.

---

Si utilizas objetos recordset, tienes que cerrarlos y asignarles "nothing",sino persisten en memoria y no dejan cerrar el ACCESS.

Ejemplo: (Realizado de memoria)

Page 14: Cuestiones Access1

Set mirecordset=Currentdatabase.OpenRecordset ("Tabla",DB_OPEN_DYNASET)mirecordset.MoveFirstDo While not mirecordset.Eofmirecordset.MovenextLoopmirecordset.closeSet mirecordset=Nothing

saludos

[email protected]

ORDENAR POR FECHAS

Necesito crear una consulta para ordenar un campo de fechas por meses perono se como---En la consulta pones un campo conmonth([fecha])y ordenas por este campo.si tienes más de un año tendrás que poneryear([fecha],"aaaa")&format(month([fecha]),"00")

Saludos Tj

FORMATO DE CAMPOS MEDIANTE CODIGO

Quisiera saber como poner que un número tenga como mucho 3 decimalespero cuando sea entero no me muestre 890.000, gracias

---

Tendrás que cambiar la propiedad formato con código de la forma:

x es el nombre del campo

if int(x)=x thenx.format="#.###"elsex.format="#.###,000"end if

Saludos TJ

CAMBIO EN INICIO DE AUTONUMERICOS

Agradecería si me podeis facilitar información de como cambiar laspropiedades de un campo autonumerico que cuando lo generas en una tabla queel primer registro no sea 1, sino cualquier otro. Ejemplo: 12100, 12101,12102....

He probado con el manual de ayuda que facilita ACCESS estableciendo unaconsulta de datos anexados, pero no me ha dado el resultado apetecido---

Page 15: Cuestiones Access1

Haz un Insert con el valor que quieras en ese campo.

Saludos TJ

PAPEL PIJAMA (ALTERNAR COLOR FONDO EN DETALLE INFORME)

Filas de diferente color en formularios/informes (papel pijama).1.- En la linea de detalle crear un 'cuadro de texto' con 'origen decontrol' =1 y activar la 'suma continua', si se desea 'Visible'=No; convieneque el resto de los fondos de los controles sean 'Transparentes'.2.- En las propiedades de 'Seccion:Detalle' en 'Al dar formato' crear un'Procedimiento de evento' parecido al siguienteIf Texto0 / 2 = Int([Texto0] / 2) Then Detalle.BackColor = RGB(255, 255, 0)Else Detalle.BackColor = RGB(255, 255, 255)donde Texto0 es el nombre del 'cuadro de texto'. Los unico que hace escontrolar impares.Las aplicaciones son variopintas. Colorear como aviso de alguna combinacionde valores, cada 33 lineas, , 3 lineas si 3 lineas no, en fin controlar elcolor de fondo (y otros controles) y facilitar la lectura al usuario.Un saludo Rafa 10

BASE DE DATOS CORRUPTA.

intenta lo siguiente, varias opciones:

1.- Renombra la base de datos corrupta, y compactala desde fuera.Si la opción 1 no funciona, Be Quietorrrr!!!.La opción 2 te funcionará seguro.

2.- Create una base de datos nueva con un nombre diferente del de lacorrupta.Impórtate todo lo de la corrupta a la nueva.Compáctala.

busca por la web de microsoft busca el archivo jet35sp3.exe es una utilidad quete permite arreglar una base de datos sin abrirla si no lo encuentras me lodices y te lo envio

[email protected]

ACCESS Y OUTLOOCK

A ver si algún "gurú" del Access me puede hechar una mano.

Tengo una Base de Datos de empleados. Cuando doy de alta un empleado nuevo,también indico la fecha de finalización de contrato, y me gustaría que elOutlock me avise el día que he marcado como baja (osea, programar una citaen el Outlock desde Access). ¿Es esto posible?.

respuestas al grupo o a mi emilio: [email protected]

Crea un módulo en tu BD, activa la referencia correspondiente aMicrosoft Outlook 8.0 (o sinó añádela manualmente buscando el ficheroMsoutl8.olb en el directorio de Office)

Page 16: Cuestiones Access1

Crea la siguiente función de ejemplo:

Function AñadirTarea()Dim appOutLook As Outlook.ApplicationDim taskOutLook As Outlook.TaskItem

Set appOutLook = CreateObject("Outlook.Application")Set taskOutLook = appOutLook.CreateItem(olTaskItem)

With taskOutLook.Subject = "Encabezado de la tarea...".Body = "Texto de la tarea...".ReminderSet = True.ReminderTime = DateAdd("n", 2, Now) 'Vencimiento.DueDate = DateAdd("d", 4, Now) 'Día de la cita (dentrode 4 días).ReminderPlaySound = True.ReminderSoundFile = "C:\Win95\media\done.wav" 'Sonido quedesees.SaveEnd WithEnd Function

Para ejecutarla sólo debes llamarla por su nombre. Haz pruebas y si teacalaras puedes pasarle los datos como parámetros.

Espero que te sirva.

==========================H :- )=Neftalí --- Germ@n Esté[email protected]

Preguntilla: ¿Tengo que instalar la referencia a Otlook en todos los PC'sque ejecuten mi aplicación?

DESACTIVAR TECLAS AVPAG RETRPAG

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)If KeyCode = 34 Or KeyCode = 33 Then KeyCode = 0End Sub

Además hay que poner la propiedad Tecla de vista previa en Sí

--Quitar una equis para [email protected] Turon escribió en mensaje <[email protected]>...>Hola a todos,>>Tengo un problema en un formulario. Me gustaria desactivar las teclas AvPag>y RePag. Alguien sabe como hacerlo?

CODIGOS DE BARRAS CON ACCESS

Page 17: Cuestiones Access1

Mira el Abarcode, especial para Access:http://www.abaforum.es/tomasb/abarcode/index.htm

Carcas <[email protected]> escribió en el mensaje de [email protected]...> Necesito imprimir en un informe el codigo de barras correpondiente alvalor> de otro campo tambien presente en el informe.>> ¿Como se puede hacer esto?. He mirado en todas las ayudas, libros, y no he> encontrado nada.>> Gracias por vuestra ayuda>> Saludos>> [email protected]

MS ACCESS, MS OUTLOOK

Si quieres saber algo de importar datos del Outlook, carpetas personales,agendas de clientes,....

Preguntamelo en : [email protected]

cris.

CUADRO DE DIALOGO DE IMPRESORA

hola

Veras, tengo un boton, el cual imprime un informe en vista previa.

Pero me gustaria que saliese el recuadro de dialogo de las impresoras dewindows para poder seleccionar la impresora adecuada.

Es decir mismo cuadro que sale por ejemplo en el menu "archivo, Imprimir..."de la aplicacion word.

-------

Creas un formulario que se llame configurar impresora. Colocas elcontrol ActiveX CommonDialog. Despues creas un modulo nuevo y copiasla siguiente función:

Function configurar_impresora()On Error GoTo configurar_impresora_Err

DoCmd.SetWarnings FalseDoCmd.OpenForm "configurar impresora", acNormal, "", "", ,acHiddenForms![configurar impresora]![commonDialog1].ShowPrinterDoCmd.Close acForm, "configurar impresora"DoCmd.SetWarnings True

configurar_impresora_Exit:Exit Function

Page 18: Cuestiones Access1

configurar_impresora_Err:MsgBox Error$Resume configurar_impresora_Exit

End Function

a continuación creas una macro que ejecute la función anterior y ya lotienes listo. DEsde cualquier boton o desde el menu puedes llamar a lamacro. Asegurate que las referencias al formulario y al common dialogque aparecen en la función son las mismas que tienes en el formularioque crees.

CONSULTA EN FORMULARIO VARIOS CRITERIOS

hola, saludos al grupo, tengo el siguiente problema, a ver si alguno mepodriais ayudar,.Gracias.

Tengo que hacer una consulta con los alumnos que estudian un determinadoidioma, se como hacer que me genere todos, ó solo los de INGLES, ó solo losde ALEMAN, pero no se hacerINGLES + ALEMAN, ó INGLES+ESPAÑOL, o sea que el usuario pueda seleccionarlos idiomas que quiera.---Crea una tabla con los idiomas y un campo Sí/No llamado mostrar (p.e.)

A través de un formulario, activas o desactivas las casillascorrespondientes, según desees un idioma, otro o varios.

Crea una consulta relacionando los alumnos con esta tabla, estableciendo elcriterio Mostrar=Sí

¿Ok?

ASIGNAR DISTINTA TABLA A UN MISMO FORMULARIO

Necesitaría saber cómo puedo, por medio de codigo, asinar unformulario con dos tablas distintas de forma alternativa.---

Mediante codigo abres el informe en modo diseño y le cambias elorigen de los datos.docmd.openreport "Informe", acviewdesign"informe".properties("origen del registro")="tabla"

Para que sea alternativo deberas comprobar que tabla es la que está comoorigen del registro:if "informe".properties("origen del registro")="tabla1" then"informe".properties("origen del registro")="tabla2"else"informe".properties("origen del registro")="tabla1"end if

Bonnin Sanso - Estate Agents – [email protected]

IMPORTAR TEXTO POR CODIGO

Page 19: Cuestiones Access1

Hola grupo,>> Se como importar texto a traves del menu ( Archivo -> Obtener Datos> Externos -> importar ) para crear (no vincular) una tabla importando los> datos de un archivo de texto.>> La pregunta es como podria hacer lo mismo a traves de codigo ... para> intentar automatizar algunas importaciones (y no hacerlas siempre con el> menu paso a paso).>> Gracias

Hola Jag,

Simplemente te tienes que crear una macro con la acción TransferirTexto.

BLOQUEO DE REGISTROS DE SUBFORMULARIO

Tengo en una base de datos de acces-97, un formulario decabecera de albaranes, que a su vez tiene un subformulario el cual es laslineas de albaran. Me funciona correctamente. Pero querria que cuando en elcampo nümero de factura del formulario haya un número de factura, me bloqueelos registros correspondientes a ese albaran en el subformulario para que nopueda editarlos, mientras no elimine el número de factura.

---Para ello deberás realizar un procedimiento en el evento "al activarregistro" (current), en el cual indiques tus opciones:

Sub form_current() 'se genera el evento cada vez que se cambia deregistro en este caso de facturaif me![número de factura]>0 then 'si hay número de facturame![SF entrada albaranes ventas].properties("bloqueado") = false'se bloquea el subformularioelse 'si no hay número de factura (nulo) o es igual a 0me![SF entrada albaranes ventas].properties("bloqueado") = true'se permite la edición del albaranend ifend sub

AÑADIR DATOS AL SUBFORMULARIO DESDE EL FORMULARIO.

Necesito añadir un nuevo registro a un subformulario y rellenar un par decampos (Fecha actual y otro campo calculado),desde el formulario principal.Lo he probado de todas maneras y no hay forma,---Si lo que quieres es insertar una registro desde el formulario principal porcódigo, yo lo hago de la siguiente manera. Asocia este evento a un botón:

Dim miBd As Database, miRS As Recordset

Set miBd = DBEngine.Workspaces(0).Databases(0)Set miRS = miBd.OpenRecordset("Nombre BD subformulario")Response = acDataErrAddedmiRS.AddNewmiRS![campo1 BD] = Valor...

Page 20: Cuestiones Access1

miRS![campo n BD] = ValormiRS.UpdatemiRS.ClosemiBd.Close

Espero haberte ayudado.

AbG

IMPORTAR TEXTO POR CODIGOHola grupo,

Se como importar texto a traves del menu ( Archivo -> Obtener DatosExternos -> importar ) para crear (no vincular) una tabla importando losdatos de un archivo de texto.

La pregunta es como podria hacer lo mismo a traves de codigo ... paraintentar automatizar algunas importaciones (y no hacerlas siempre con elmenu paso a paso).

---Simplemente te tienes que crear una macro con la acción TransferirTexto.

TOPE DE REGISTRO EN SUBFORMULARIO

Tengo un subformulario dentro de un formulario.Lo que me gustaría hacer esque en ese subformulario no admitiese mas de 18 registros para eseformulario de manera que cuando llegue al 18 me avise de que tengo quevolver hacer otro pedido.¿como se hace?

[email protected]

---En el evento Antes de Insertar del SUBFormulario le pones

Private Sub Form_BeforeInsert(Cancel As Integer)Dim x As Bytex = Me.RecordsetClone.RecordCountIf x > 17 ThenMsgBox "Demasiados registros, haga otro pedido"Cancel = TrueEnd IfEnd Sub

Un saludo JavaTex

Page 21: Cuestiones Access1

CREAR UN SUMA Y SIGUE

Hola grupo a ver si alguien me puede echar un cable, quedaría sumamenteagradecido ya que no lo consigo.

La cuestion es la siguiente:Tengo una tabla simple con dos campos uno autonúmerico y otro númerico paraintroducir cifras

Lo que quiero es crear un informe con esa tabla y que en cada página delinforme me haga el subtotal de las cifras de esa página por ejemplo en uncuadro de texto y al final del informe me ponga la suma total de las cifras(esto si se hacerlo).

Pongo un ejemplo de como sería el informe si cada página fuera de 3registros:Número de registro Pts-------------------------- -----1 10002 10003 3500

Subtotales: 3 registros 5500 pts

Página 1 de 3

En definitiva lo que no logro es sacar el subtotal ya que no se comocontrolar el número de registros que me van a entrar en una página delinforme.Podriais sugerirme alguna forma de hacerlo de manera sencillaBueno gracias de nuevo por tan siquiera leerlo.

[email protected]

---

Una forma sencilla, en el pie de página el suma y sigue.En el pie del informe un control con origen del registro: =suma(importe)

El control suma y sigue con origen de control : =SUbtotal()

En el código del informe

Declaras una variable global:

Dim imp as double

Al imprimir en el encabezado de páginaimp=0

En el detalle la función SubtotalPrivate function Subtotal() as doubleImp=imp+importeend function

en el détalle, evento al imprimir

if me.page=me.pages thensimporte.visible=false ' Simporte es el control que tienes en el pie de

Page 22: Cuestiones Access1

páginaendif

espero que te sea de utilidad.. Saludos

DOMICILIACION BANCARIA.

Me puede facilitar alguien la estructura de las tablas necesaria paraconfecionar la domiciliacion de recibos y/ o anticipos bancarios.Tambien desearia saber como se exportan los datos para generar elcorrespondiente diskette que se entrega a la entidad bancaria.Ya se que existe en el foro alguna aplicación que lo hace, pero megustaria currarmelo por mi cuenta.Gracias a todos

----Podeis descargarlo en: http://www.abaforum.es/tomasb/access.htmespero que os sirva.

PROBLEMAS AL INSTALAR ACCESS 2000 DESPUES DE ACCESS 97

Esquematizando:-Office 97 instalado y funcionando perfectamente. Bien.-Instalo Office 2000 (sin desinstalar el 97), no problem. Bien.-Intento abrir una BD en la que estaba trabajando y me da un error en unformulario (error mío no apuntar el mensaje que me dio). No hay manerade convertirla ni de abrirla. Sudores fríos. Mal.-Vale, desinstalo el 2000 y vuelvo a instalar el 97. No da problemas enla instalación pero al intentar abrir Access me dice que: "Imposibleiniciar Microsoft Access porque no hay licencia para el producto en esteequipo". Mal, muy mal. Sniff.-Lo he instalado otras tres veces y he hurgado en el registro quitandolas referencias a Access que quedaban y no hay manera, no encuentro lasolución.

Exceptuando el formateo del HD (que ya se me ha ocurrido a mí),algún consejo, sugerencia, experiencia... en fin iluminación que meayude?Gracias.

---

ETERNAMENTE AGRADECIDO. Mañana lo pruebo.

Julian Peris wrote:

> PSS ID Number: Q141373> Article last modified on 07-30-1999>> WINDOWS:7.0,97>> WINDOWS>> ======================================================================> ----------------------------------------------------------------------------> ---> The information in this article applies to:>

Page 23: Cuestiones Access1

> - Microsoft Access versions 7.0, 97> ----------------------------------------------------------------------------> --->> IMPORTANT: This article contains information about editing the registry.> Before you edit the registry, make sure you understand how to restore it if> a problem occurs. For information about how to do this, view the "Restoring> the Registry" Help topic in Regedit.exe or the "Restoring a Registry Key"> Help topic in Regedt32.exe.>> SYMPTOMS> ========>> Novice: Requires knowledge of the user interface on single-user computers.>> When you start Microsoft Access 7.0 or 97, you may receive the following> error> message.>> In Microsoft Access 97> ---------------------->> Microsoft Access can't start because there is no license for it on this> machine.>> -or->> Can't find the database you specified or you didn't specify a database at> all.>> In Microsoft Access 7.0> ----------------------->> Microsoft Access can't be started as there is no license for it on this> machine.>> CAUSE> =====>> Microsoft Access is not properly registered on your computer. When you start> Microsoft Access, it checks the Windows Registry for the following entry.>> In Microsoft Access 97> ----------------------> \\HKEY_CLASSES_ROOT\Licenses\8CC49940-3146-11CF-97A1-00AA00424A9F>> In Microsoft Access 7.0> -----------------------> \\HKEY_CLASSES_ROOT\Licenses\B54DCF20-5F9C-101B-AF4E-00AA003F0F07>> If this entry is missing, you receive the error message mentioned in the> "Symptoms" section.>> NOTE: The same key is used for both the retail version and the run-time> version> of Microsoft Access.>> In Microsoft Windows NT 4.0 only, you may also receive this error message if> you> do not have Read permissions to the Licenses key in the registry.>

Page 24: Cuestiones Access1

> In Microsoft Windows 98, you may also receive this error message because of> a> problem with the installation process.>> RESOLUTION> ==========>> To resolve this issue, follow the steps below that are appropriate for your> situation.>> WARNING: Using Registry Editor incorrectly can cause serious problems that> may> require you to reinstall your operating system. Microsoft cannot guarantee> that> problems resulting from the incorrect use of Registry Editor can be solved.> Use> Registry Editor at your own risk.>> For information about how to edit the registry, view the "Changing Keys And> Values" Help topic in Registry Editor (Regedit.exe) or the "Add and Delete> Information in the Registry" and "Edit Registry Data" Help topics in> Regedt32.exe. Note that you should back up the registry before you edit it.> If> you are running Windows NT, you should also update your Emergency Repair> Disk> (ERD).>> Steps to Try If Microsoft Access Is Not Properly Registered> ----------------------------------------------------------->> There are two ways to resolve this error message. You can uninstall> Microsoft> Access on your computer, and then reinstall it.>> -or->> You can run the Microsoft Access Setup program using a command line switch> (/y)> to reset your computer's registry. To reset the registry, follow these> steps:>> 1. In Windows 95, Windows 98, and Windows NT 4.0, click the Start button,> then> click Run (or in Windows NT 3.51, click Run on the File menu in Program> Manager or File Manager).>> 2. Type a command to run the Microsoft Access Setup program using the /y> switch,> for example:>> C:\Setup /y>> 3. In the Installation Maintenance Program box, click Reinstall. The Setup> program updates the system Registry for Microsoft Access. When Setup is> complete, start Microsoft Access.>> Steps to Try If Problem Is Caused by No Read Permissions to Licenses Key> ------------------------------------------------------------------------>> When logged on to a Windows NT 4.0 system as an administrator, you can check> and

Page 25: Cuestiones Access1

> modify user permissions to the different registry keys using the Windows NT> 4.0> registry editor. To do so, follow these steps:>> 1. Log on to the problem computer as an Administrator.>> 2. On the Task Bar, click Start, and then click Run.>> 3. Type "regedt32" (without the quotation marks), and click OK.>> 4. Select the \\HKEY_CLASSES_ROOT\Licenses key.>> 5. On the Security menu, click Permissions.>> 6. Make sure that the necessary users and groups have at least Read> permissions> to the key.>> 7. Close the Registry Editor and re-start the computer.>> When you log on as a typical user, you should now be able to start Microsoft> Access without problems.>> Steps to Try If You Are Using Windows 98 and Microsoft Access 97> ---------------------------------------------------------------->> If you have upgraded your computer to Windows 98, you may experience the> problem> described in the "Symptoms" section of this article under the following> conditions:>> - You have installed Microsoft Publisher>> - You have installed Microsoft Office 97 Professional Edition>> Note: In Windows 98 with Access 97, you may also see the following error:>> Can't find the database you specified or you didn't specify a database at> all.>> Certain fonts that are installed by Microsoft Publisher can result in the> incorrect registration of Microsoft Access 97, but only when Access is being> installed from the Office 97 Professional CD. You can correct the> registration> error by using either of the following methods:>> Rename one of the problem fonts, and then reinstall Microsoft Access from> the> Setup Maintenance Mode.>> -or->> Download a tool that Microsoft has on its Downloads Web site that corrects> this> problem.>> For more information about either method, see the appropriate section below.>> Renaming the Font and Reinstalling Microsoft Access> --------------------------------------------------->

Page 26: Cuestiones Access1

> Reinstalling Microsoft Access 97 using the Setup Maintenance Mode does not> require you to uninstall Microsoft Access first; it simply returns the> computer> to the install state that it was in the last time Setup was run. Follow> these> steps to correct the registry error:>> 1. On the Start menu, point to Find, and then click Files Or Folders.>> 2. In the Named box, type "hatten.ttf" (without the quotation marks).>> 3. In the Look In box, type "C:\Windows\Fonts" (without the quotation marks)> or> the path to the Fonts folder on your computer.>> 4. Click the Find Now button to start the search.>> 5. Under Name, right-click the hatten.ttf file, and click Rename on the menu> that appears.>> 6. Change the name of the file to "hatten.xxx" (without the quotation> marks).>> 7. Minimize (but do not close) the Find dialog box.>> 8. On the Start Menu, point to Settings, and click Control Panel.>> 9. In Control Panel, double-click Add/Remove Programs.>> 10. In the Add/Remove Program Properties dialog box, select the Install/> Uninstall tab and select Microsoft Office 97, Professional Edition from> the> program list.>> 11. Click the Add/Remove button to run Office Setup in Maintenance Mode.>> 12. In the Microsoft Office 97 Setup dialog box, click Reinstall.>> 13. Once the reinstallation is finished, click the Find dialog box on the> Windows taskbar to maximize it.>> 14. Under Name, right-click the hatten.xxx file, and click Rename on the> menu> that appears.>> 15. Change the name of the file to "hatten.ttf" (without the quotation> marks).>> Microsoft Access should now be properly registered.>> Using the Downloadable Tool> --------------------------->> The AcLicn97.exe file contains a tool that corrects the problem discussed in> this> article so that you can run Microsoft Access 97 successfully. For more> information about downloading this tool, please see the following article in> the> Microsoft Knowledge Base:>> ARTICLE-ID: Q191224 ACC97: AcLicn97.exe Available for Download on MSL

Page 27: Cuestiones Access1

>> REFERENCES> ==========>> For more information about removing Microsoft Access 7.0 from your hard disk> drive, please see the following article in the Microsoft Knowledge Base:>> ARTICLE-ID: Q167850 ACC95: How to Uninstall Microsoft Access 7.0>> Additional query words: win98 acc97 acc95>> ======================================================================> Keywords : kberrmsg kbsetup StpGnrl> Version : WINDOWS:7.0,97> Platform : WINDOWS> Hardware : x86> Issue type : kbprb> ============================================================================> => Copyright Microsoft Corporation 1999.>> -->> Saludos,>> Julian> Pompeyo <[email protected]> escribió en el mensaje de noticias

Yo hice lo de la instalación con el parámetro /y y ni puto caso. Lo quesi me ha funcionado es el archivo AcLicn97.exe, que lo puedes bajar dehttp://support.microsoft.com/download/support/mslfiles/AcLicn97.exe,aunque puedes tardar un ratillo en bajarlo... Pero me solucionó elproblema. Prueba a ver si se te arregla.

-- ========================J. Fernando López [email protected](quitad xxx para correo)========================

CERRAR UN FORMULARIO A LOS X SEGUNDOS

En la propiedad "al cronómetro" le pones la accion que quieras (macro ocódigo). Vale poner una macro con la instrucción cerrar.

La Propiedad "Intervalo del cronómetro" mide en milésimas de segundo(aprox). Depende un poco de la máquina que tengas, pero a mi me lo respetarelativamente bien.

El tiempo esta en ms, por lo cual debes colocar 5000 para un tiempo de 5s.

Espero que te funcione

GJM

Page 28: Cuestiones Access1

abacoce <[email protected]> escribió en el mensaje de [email protected]...> Un saludo al grupo y muchas gracias de antemano.> Por favor, como puedo cerrar un formulario despues de por ej: 5 segundosde> su ejecución.> he visto una propiedad de formulario, on timer pero algo falla paracalcular> los cinco segundos...> muchisimas gracias a todos.>>

COMPACTAR DESDE CODIGO

Hola a todos. He realizado una pequeña base de datos(compacta.mdb) para compactar otra (bd.mdb) automaticamentecuando se cierra esta ultima. La base de datos compacta.mdbcompacta correctamente la otra si se abre estando bd.mdbcerrada. Lo que pretendía hacer es, al cerrar bd.mdb, abrircompacta.mdb con el fin de relaizar la compactacion siempreque se cerrase bd.mdb.

Al ahacer click en un boton de un formulario escriboDo.Cmd Quit para cerrar la base de datos bd.mdb, pero no selo que he de escribir para abrir compacta.mdb una vez cerradala primera.

Otro problema es que la base de datos compacta.mdb esta hechapara el caso en que bd.mdb se encuentre en un directorio determinado.Como puede averiguarse el directorio donde se encuentranlas bases de datos? El codigo que lleva a cabo la compactacion es:

If Dir("temporal.mdb") = "" ThenDBEngine.CompactDatabase "d:\doc\bd.mdb", "temporal.mdb"ElseKill ("temporal.mdb")DBEngine.CompactDatabase "d:\doc\bd.mdb", "temporal.mdb"End IfKill ("d:\doc\bd.mdb")Name "temporal.mdb" As "d:\doc\bd.mdb"

Este codigo lo posteo Lucio Gallego hace algun tiempo en este grupo.

Como se ve, la base de datos bd.mdb ha de estar en el directoriod:\doc. Que cambios tendria que hacer en el codigo anterior paraleer el directorio donde se encuentra compacta.mdb (que seria elmismo donde esta bd.mdb)?---

Para abrir la otra base de datos usa la funcion shell, justo antes de cerrarla primeraEjemplo

dim xx=Shell("Msaccess C:\datos\Miotra.Mdb",3)docmd.quitUn saludo JavaTex

Page 29: Cuestiones Access1

---Para saber el directorio donde esta la base de datos una forma facil

dim x as stringx=currentdb.name

si la base de datos esta en c:\datos y se llama mibase.mdb x valdrac:\datos\mibase.mdbsi recorres la cadena y te quedas con lo ke hay a la izquierda de la ultima\ conoceras el directorio donde se encuentra, si tienes dudas de como haceresto pregunta

Un saludo JavaTex

PASO A FECHAS

Tengo un problema que no se como se soluciona en access y quisiera quealgún alma caritativa me orientara.

En una tabla vinculada tengo tres campos de tipo numérico: "DDPED","MMPED", "AAPED" (día, mes y año de pedido respectivamente) y he dealmacenarlos en el campo "Fecha_Pedido" de otra tabla. (tipo fecha)

Lo que no consigo hacer es volcar el contenido de los campos de la tablavinculada en el campo "Fecha_Pedido" . El proceso de volcar el contenido deun campo a otro, lo hago sin problemas, lo que no logro es concatenar dealguna forma DDPED,MMPED,AAPED para que el resultado sea un valor de fecha.

---Tendrías que usar la función CVDATE para convertir a fechas y concatenarlos campos como una fecha con formato dd/mm/aa. Supongo que de esta forma tefuncionará:

dim cf as stringcf=DDPED & "/" & MMPED & "/" & AAPED)Fecha_Pedido=CVDATE(cf)---

Utiliza la funcion dateserial (seriefecha), hace justo lo ke kieresdateserial(año;mes;dia)hazlo con una consulta de actualizacion por ejemploEjemplo:dateserial(1999;4;21) devolveria la fecha 21/4/1999Un saludo JavaTex

CAMBIO DEL COLOR DE FONDO DEL CAMPO DONDE ESTE SITUADO EL CURSOR

Mi consulta es la siguiente:En un formulario introduzco datos.Al pasar de una campo a otro es lo normal que se quede el cursor(intermitente) al inicio del campo.¿Existe alguna posibilidad de que dicho campo cada vez que estés situado enél se pondría por ejemplo de color amarillo?. Esto lo quiero hacer por unarazón muy sencilla. Tengo un formulario con muchos campos y si no lo hago deesta manera, tengo que escribir algo para saber en que campo estoy, mientrasque de la otra manera me resultaría más fácil al ver el campo en otro colordiferente.

Page 30: Cuestiones Access1

Gracias grupo.

[email protected]

---

Crea la siguiente funcion en un modulo

Function Colorfondo(ES As Boolean)On Error Resume NextDim Mic As ControlSet Mic = Screen.ActiveControlIf ES = True ThenMic.BackColor = QBColor(11)ElseMic.BackColor = QBColor(15)End IfEnd Function

En el evento del control al recibir el enfoque que quieras que ocurra ponle=Colorfondo(Verdadero)y en el evento al perder el enfoque=Colorfondo(Verdadero)

Nota 1: como supongo lo querras poner en muchos controles ponselo a todos ala vez, es decir seleccionalos todos y luego saca las propiedades de esaseleccion multiple y se lo pones, ojo que en la seleccion no hayaseleccionado una etiqueta pues entonces no aparecera las propiedades de esoseventosNota 2: donde en el codigo pone el 11 y el 15 puedes poner otros numerosentre 1 y 15 pues esos numeros indican el color de fondo que aparecera,tanto el que se establece al entrar en el control como el que se vuelve aponer una vez salgas de él.

Un saludo JavaTex

DISTINTO COLOR EN LINEAS DE SUBFORMULARIO DEPENDIENDO DE CONTENIDO CAMPO

Tengo un formulario con un subformulario. En el formulario tengo los datosdel cliente y en el subformulario aparecen las facturasde ese cliente. Se puede hacer que la facturas pendientes de pago el texto oel fondo salga de otro color?

Muchas gracias.

---

Una de las formas es creando una tabla nueva con dos campos:El primer campo(Clave) con formato Si/No y el segundo un campo ole de mapade bits.A continuacion crea un Campo ("Pagada":Si/no) en la tabla de facturas yrelacionalo con el campo Si/No de la tabla anterior.En el formulario donde presentes las facturas crea un control con origen enel mapa de bits y superponle el campo del importe de la factura con uncontrol transparente.Por supuesto que al mapa de bits le puedes poner el color que quieras.

Page 31: Cuestiones Access1

COMO ELIMINAR ALGO QUE SE ARRANCA SIEMPRE AL ARRANCAR WINDOWS

Necesitaria saber como puedo quitar el que se me abra una carpeta llamadaprogramas, nada mas iniciar o reiniciar windows, no me comenteis lo del menuinicio que ya no esta.Gracias porque me esta volviendo loco.---

Ha mirado en el registro, en: (ejecutar el regedit)HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunAlli esta todo lo que carga al iniciar---En el disco de W98 en la carpeta Tools\Reskit\Toy (creo, si no es esa estápor esa zona) hay un fichero llamado TweakUI.inf

Lo pinchas con el bóton derecho y eliges instalar. Te instala la utilidadTweak UI en el panel de control que, entre otras cosas te permiteactivar/desactivar los programas que se cargan en inicio. Bastante majo.Sirve también para NT.

AÑADIR LINEAS A CAMPO MEMO

quiero meter distintas lineas de texto en un campo memo, de una tablaaccess, pero no se como hacerlo.Lo hago componiendo el texto a introducir en una variable, pero los retornode carro los añado como chr(13), y cuando edito el memo, o lo veo en elformulario, donde estan los retornos de carro, aparece un cuadradito, y nosalta a la siguiente linea del texto como quiero.

Que estoy haciendo mal?.---

Debes concatenarchr(13) & chr(10)Un saludo JavaTex

FORMULARIO CON DOS SUBFORMULARIOS. (COMUNICACIÓN SEGUNDO CON TERCER FORMULARIO)

hola a todos ,mi problema (tonto, seguro) es el siguiente:tengo un formulario (formulario alfa) que tiene dos subformulariosformularios beta y gamma)¿como se puede hacer para que al modificar un registro (es un cuadrocombinado) en el formulario beta, aplique un filtro en el formulario gammacon el valor del formulario beta contenido en el cuadro combinado?---Si ControlGamma es numericodim elvalor as doubleElvalor=Forms![FormAlfa]![FormBeta].Form![ControlBeta]Forms![FormAlfa]![FormGamma].Form.Filter = "ControlGamma=" & ElValorForms![FormAlfa]![FormGamma].Form.FilterOn = True

Si ControlGamma es textoDim elvalor as stringElvalor=Forms![FormAlfa]![FormBeta].Form![ControlBeta]Forms![FormAlfa]![FormGamma].Form.Filter = "ControlGamma='" & ElValor & "'"Forms![FormAlfa]![FormGamma].Form.FilterOn = True

Ojo con las comillas simples

Page 32: Cuestiones Access1

Un saludo JavaTex

BUSCAR Y ENCONTRAR REGISTROS (DLOOKUP)

necesito buscar y encontrar un registro que cumpla varias condiciones, sepuede hacer con el DlookUp?

Con una condición si sé, pero con dos... se puede?

---

Si puedes, mira los ejemplos,Para campos de texto con criterios en controlesDlookup("Edad";"NombreTabla o consulta";"Apel1='" & [control1] & "' AndApel2='" & [control2] & "'")

Para campos de texto con criterios de texto fijoDlookup("Edad";"Nombre Tabla o consulta";"Ape1='Perez' And Ape2='Sanchez'")

Para campos numericos con criterios en controles y como numerosDlookup("Ape1";"Nombre Tabla o consulta";"Edad=" & 34 & " AndOtroCamponumerico=" & [Control1])

Para campos numericos con criterios numericosDlookup("Ape1";"Nombre Tabla o consulta";"Edad= 34 And OtroCamponumerico=28")

EXISTENCIA DE ARCHIVOS

Necesito comprobar desde el código si un archivo jpg existe.

---

Revisa ayuda en Access (encontrarás también ejemplos) sobre lainstrucción DIR. Pasándole el path de un archivo te dice si lo ha encontradoo no.

_________o0o____________Neftalí - Germán Esté[email protected]

IMPRIMIR SUMA Y SIGUE

La hoja para imprimir el pedido es una medida Standard e invariable y cuandoel pedido me sobrepasa un hoja tiene que imprimirlo en dos hojas.He conseguido imprimir el mismo encabezado en cada hoja, pero me gustaríaque en la primera hoja me imprimiera un "SUMA Y SIGUE" y que me sumara losconceptos que vienen en la 1º hoja y luego en la segunda hoja que me sumarael total del pedido.Lo he intentado de todas las maneras pero no me sale (ni con la ayuda deAccess que más o menos explica algo).

Ayudarme por favor, si queréis os mando la base de datos y así meentenderíais mejor.Gracias de todos los modos.

[email protected]

Page 33: Cuestiones Access1

---

En la base de ejemplo Soluciones que viene con Access, en la sección deInformes viene un ejemplo dedicado especialmente al Suma y sigue de lasfacturas.

Sin llegar a entenderlo del todo, lo he utilizado y funciona sin problemas.

COPIAR FICHEROS DESDE ACCESS

Necesito copiar unos ficheros *.txt de un directorio a otro desde unformulario access seleccionando unos registros

---Usa la instruccion filecopyFileCopy ArchOrigen, ArchDestinoUn saludo JavaTex

COMPACTAR UNA BASE DE DATOS A PARTIR DE OTRA. UBICACIÓN.

Hola a todos. He realizado una pequeña base de datos(compacta.mdb) para compactar otra (bd.mdb) automaticamentecuando se cierra esta ultima. La base de datos compacta.mdbcompacta correctamente la otra si se abre estando bd.mdbcerrada. Lo que pretendía hacer es, al cerrar bd.mdb, abrircompacta.mdb con el fin de relaizar la compactacion siempreque se cerrase bd.mdb.

Al ahacer click en un boton de un formulario escriboDo.Cmd Quit para cerrar la base de datos bd.mdb, pero no selo que he de escribir para abrir compacta.mdb una vez cerradala primera.

Otro problema es que la base de datos compacta.mdb esta hechapara el caso en que bd.mdb se encuentre en un directorio determinado.Como puede averiguarse el directorio donde se encuentranlas bases de datos? El codigo que lleva a cabo la compactacion es:

If Dir("temporal.mdb") = "" ThenDBEngine.CompactDatabase "d:\doc\bd.mdb", "temporal.mdb"ElseKill ("temporal.mdb")DBEngine.CompactDatabase "d:\doc\bd.mdb", "temporal.mdb"End IfKill ("d:\doc\bd.mdb")Name "temporal.mdb" As "d:\doc\bd.mdb"

Este codigo lo posteo Lucio Gallego hace algun tiempo en este grupo.

Como se ve, la base de datos bd.mdb ha de estar en el directoriod:\doc. Que cambios tendria que hacer en el codigo anterior paraleer el directorio donde se encuentra compacta.mdb (que seria elmismo donde esta bd.mdb)?---

Para abrir la otra base de datos usa la funcion shell, justo antes de cerrarla primera

Page 34: Cuestiones Access1

Ejemplo

dim xx=Shell("Msaccess C:\datos\Miotra.Mdb",3)docmd.quitUn saludo JavaTex

---

Para saber el directorio donde esta la base de datos una forma facil

dim x as stringx=currentdb.name

si la base de datos esta en c:\datos y se llama mibase.mdb x valdrac:\datos\mibase.mdbsi recorres la cadena y te quedas con lo ke hay a la izquierda de la ultima\ conoceras el directorio donde se encuentra, si tienes dudas de como haceresto pregunta

Un saludo JavaTex

BUSCAR ARCHIVOS DESDE ACCESS

Usa la funcion dirEl ejmplo de access es bastante claroEn este ejemplo se utiliza la función Dir para comprobar si existen ciertosarchivos y directorios. En Macintosh se puede utilizar la función MacID paraespecificar el tipo de archivo.

Dim MiArchivo, MiRuta, MiNombre' En Microsoft Windows:' Devuelve "WIN.INI" si existe.MiArchivo = Dir("C:\WINDOWS\WIN.INI")

' Se devuelve el nombre de archivo con la extensión especificada. Si hay másde un archivo *.INI se

' devuelve el primer nombre de archivo que se encuentra.MiArchivo = Dir("C:\WINDOWS\*.INI")

' Se vuelve a llamar la función Dir sin argumentos para obtener el siguientearchivo *.INI del' mismo directorio.

MiArchivo = Dir

' Se devuelve el primer archivo *.TXT con que tenga activado el atributooculto.

MiArchivo = Dir("*.TXT", vbHidden)

' Muestra los nombres en C:\ que representan directorios.MiRuta = "c:\" ' Establece la ruta.MiNombre = Dir(MiRuta, vbDirectory) ' Recupera la primera entrada.Do While MiNombre <> "" ' Inicia el bucle.' Ignora el directorio actual y el que lo abarca.

Page 35: Cuestiones Access1

If MiNombre <> "." And MiNombre <> ".." Then

' Utiliza comparación a nivel de bits para asegurarse de que MiNombre es undirectorio.

If (GetAttr(MiRuta & MiNombre) And vbDirectory) = vbDirectory ThenDebug.Print MiNombre ' Muestra la entradaEnd If ' solamente si representa un directorio.End IfMiNombre = Dir ' Obtiene siguiente entrada.Loop

Un saludo JavaTex

COLOR DE FONDO DE LOS CAMPOS

Me gustaria saber cual es la mejor manera de colorear los camposen un formulario de marron, por ejemplo, cuando tengan el enfoque y queeste otra vez blanco cuando pierda el enfoque. No se si es mejor una macro o codigo Visual---

Una sencilla respuesta es dejar el color de fondo del control comotransparentey ya está . cuando coje el enfoque tiene un color y cuando lo pierde otro.

LISTA DE ACCESS

Me podeis indicar alguna lista de correo de Access???---Hay una lista recién creada, apúntate en

http://accessBD.listbot.com/

Nada más entrar te preguntará tu cuenta de correo, introdúcela y darle a OK.Más tarde rellena una pequeña pasword, para que nadie vea tus mensajes en elservidor de la lista de correos, rellena un pequeño formulario (Nombre,Apellidos, Ciudad y Páís) y ya está. Todos los mensajes mandados a lista decorreos (dudas, aclaraciones, etc...) serán mandados a tu cuenta de correos.

Una vez te haya subscrito el servidor te mandará un mensaje de confirmacióna tu cuenta, le das a reply (responder) y ya está (es por seguridad, paraque nadie te apunte a la lista de correo sin tu permiso).

[email protected]

NUMERO CORRELATIVO EN REGISTROS.

Hola1.Tengo una aplicacion para hacer facturas que registra los datos de lafactura que imprimo .2. Y quiero que: en el campo [numero de factura] se rellene automaticamentecon el numero correlativo siguiente al registrado ... Alguien puede decirmealgo?... Gracias---

Como decía Carlos unos mensajes atrás, utiliza la función DMáx.

--

Page 36: Cuestiones Access1

Saludos,Tomás Boixethttp://www.abaforum.es/tomasb

PROBLEMAS CON LA SEGURIDAD A NIVEL DE USUARIOS

He terminado mi base de datos y ahora quiero asignar la seguridad a nivel deusuario, pues bien1º he dividido la base de datos.2º he establecido los usuarios y los permisos respectivos.3º inicio el asistente para crear la tabla protegida.

PROBLEMA, arranco la base de datos como administrador y asi no puedoprotegerla.¿como la inicio con un usuario?

Os parecera una chorrada pero llevo horas intentando sin satisfaccionproteger la base de datos con nivel de usuario ... alguien me puede hecharuna mano.

---Hace bastante intente lo que comentas y lo deje porque me desesperé. Despuésme compré un libro de Access en que decía mas o menos como establecer laseguridad a nivel de usuario. Te digo. Lo que tienes que hacer es crear unnuevo grupo en el que tengas administradores y usuarios. Asignas lospermisos correspondientes. El problema está en que Access por defecto creeque uno es el administrador y para evitar esto tienes que crearte un gruponuevo con un nuevo administrador(el nombre que tu quieras) y quitarle todoslos permisos al que pone Access por defecto. Si no haces esto cualquiera quese lleve la base de datos a su ordenador la podrá abrir sin ningún problema.

Esto que te cuento es la teoría te digo que aun no lo he comprobado. Detodas formas ya me dirás como te ha ido y a ver si entre los dos conseguimoshacer con la maldita seguridad a nivel de usuario.

NORMAS 19 43 Y 58 DEL C.S.B.

Hola a todos:

Las normas 19, 43 y 58 del Consejo Superior Bancario las podeisencontrar en la página de José Bengoechea enhttp://www.teleline.es/personal/j.b.chea

Un saludo a [email protected]

ODE TOOLS PARA ACCESS 97

Hola a todos:Tengo las ODE TOOLS 97 y estoy creando la instalacion de una base de datoscon el setupwizar. Lo hace todo bien, pero yo creia que de la base de datoste crea un ejecutable, y a mi no me lo ha hecho, solor me ha copiado la basede datos tal cual, y esta abierta con el código y todo lo demás a la vista.¿Hago algo mal o es así?Gracias si alguien me contesta.

Page 37: Cuestiones Access1

---

Has de crear varios elementos antes de empezar a distribuir la aplicacion:

1) Separa las tablas con el divisor de bases de datos2) Create un grupo de trabajo de access en el que solo tu tengas acceso aldiseño de todo. Es decir Hazte propietario unico e indiscutible de la basede datos :-)3) Compacta y crea un archivo .Mde de la base de datos4) Distribuye solo el .Mde y nadie que no tenga un crackeador de accesspodra acceder al código.

El motivo de separar las tablas no es otro que el que cualquiera pueda hacerlo que quiera con los datos, asi que si no es lo que tu quieres no lo hagas.

Un saludo...

..Todo es correcto, esas tools te permiten crear discos de instalacion parainstalar sin que el cliente necesite tener instalado el access, pero ten encuenta que el fichero .mdb es una base de datos, necesita escribirse sobreel pues almacena las tablas. Te puedes aproximar a lo que quieres creando un.mde que evitara que puedan diseñar forms reports y modulos.Un saludo JavaTex

...Bien, la solución del mde és una. Pero puedes hacer lo que quieres creandoun acceso directo al mdb en runtime. Ésto lo puedes hacer des del asistenteo a posteriori. Si dejas que el asistente lo haga no hay ningún problema.Para hacerlo cuando estés en la pantalla dónde pone List of Shortcuts: ledas al botón Add. El te pondrá un "New Shortcut". Entonces ve al tab dóndepone Database Shortcut Properties. En file to open indica el mdb que tienelos procesos (tienes que haberlo puesto en la lista inicial), es decir elmdb que quieres distribuir i ejecutar. En Description pon un unadescripción. Ahora lo más importante, bajo el epígrafe "DatabaseCommand-Line Options" marca la última opción: Run-Time. Si además quieresque utilicen un grupo de seguridad determinado marca también la opciónWorkgroup (tienes que haber puesto también el mdw en la lista de ficheros alprincipio).Luego sigue adelante con el setup i cuando te pregunta "Which of thefollowing components do you want to include?" tienes que marcar el primero"Microsoft Access RunTime Version" a parte de los demás que quiera incluir.Luego sigue cómo hacias y ya está. Una vez ejecuten el setup de lainstalación en cada pc les creará un acceso directo a la aplicación con losmodificadores necesarios.

Para que veas un ejemplo :

"C:\Archivos de programa\Microsoft Office\Office\msaccess.exe" /runtime/wrkgrp "C:\EINES\wgroup\ecoadt80.mdw" "C:\EINES\NRG\Nrg#p.mdb"

Esta es la línea de comando de un acceso directo que abre una aplicación conla runtime del Access y bajo un grupo de seguridad determinado.

Cuando abres una aplicación en runtime no se puede acceder a los objetos dela base de ninguna manera. No funcionan ni F11 ni control-F11 ni nadaparecido. Eso si, tienes que tener muy bien implementado el control deerrores dentro de los formularios y funciones, porque a la que algo de un

Page 38: Cuestiones Access1

error que no tengas controlado, Access le da el error al usuario y despúéscierra la aplicación y el Access porqué no se puede visualizar el mòdulo delfallo, o sea, que los echa, y eso no les gusta mucho (sic!)

En fin, nosotros siempre instalamos las aplicaciones en run-time. Sólo lohacemos en mde cuándo la damos realmente por definitiva o si tienesproblemas de lentitud graves para acelerarla. También será práctio sinótienes referencias a librerias de otras aplicaciones. En ese caso resultamuy tedioso hacer una modificación, puesto que tienes que volver a compilary a crear los mde de todas las librerias o aplicaciones que tengasreferenciadas.

En fin, si tienes alguna duda dímelo.

Núria

LETRA DEL NIF

Cortesía de Jaime Puerta en éste grupoSaludos Jom

Function letra_dni(dni)' calcula la letra del dniConst DNILET = "TRWAGMYFPDXBNJZSQVHLCKE"letra_dni = Mid(DNILET, 1 + (dni Mod 23), 1)End Function

ACCESS Y OTULOOK EXPRESS

¿Qué parametro debo pasarle al outlook para que al pulsar un botón en unformulario de access me habra el outlook pero sólo la ventana de enviarnuevo correo? Muchas gracias de antemano.

E-Mail: [email protected]

---

Con la accion EnviarObjeto (macro) puedes enviar un E-Mail,(DoCmd.SendObject)

EXPORTAR TABLAS DE ACCESS A TEXTO

Para cada registro que guardes en la tabla con losnombres de tablas utilizas:

DoCmd.TransferText acExportDelim, tblMaestra!NomDestino & ".txt", ,tblMaestra!NomTabla

CALCULO DE HORAS

Page 39: Cuestiones Access1

Mi problema es: Tengo que calcular una suma de horas, pero cuando pasa de> 24, automáticamente suma un dia entero y del total resta 24 hora y nunca> consiguo lo que quiero, que es, por ejemplo 52:35:00.

---

Prueba lo siguiente:

Option Compare DatabaseOption Explicit

Dim lngDias As LongDim lngHorasTotales As LongDim lngHoras As LongDim lngMinutos As LongDim lngSegundos As Long

' la siguiente función devuelve una cadena con el formato que querías' además actualiza las variables globales de día, hora, etc...

Public Function SumaHoras(Hora1 As Date, Hora2 As Date) As String

Dim datSumaHoras As Date

datSumaHoras = Hora1 + Hora2

lngDias = datSumaHoras \ 1lngHoras = DatePart("h", datSumaHoras)

lngHorasTotales = lngDias * 24 + DatePart("h", datSumaHoras)lngMinutos = DatePart("n", datSumaHoras)lngSegundos = DatePart("s", datSumaHoras)

SumaHoras = lngHorasTotales & ":" & lngMinutos & ":" & lngSegundos

End Function

Hora1 y Hora2 pueden pasarse en formato de hora

debug.print SumaHoras(#13:12# , #20:12:5#)

también pueden pasarse como un número fraccionalpor ejemplo 5 horas y media más 2 horas y cuarto(Hay que dividir las horas entre 24 horas de 1 día)

debug.print SumaHoras(5.5/24 , 2.25/24)

ENVIAR FAX

Aguien puede decirme como puedo enviar un faxdesde access.Saludos y gracias.

---

Hola,

Yo lo he hecho de la siguiente forma:

Page 40: Cuestiones Access1

Haces el informe que luego vas a enviar por fax. Luego entras enconfigurar Pagina, y en página le pones usar impresora predeterminada, lepones en lugar de la impresora el fax.

Espero que te sirva

CODIGO DE BARRASAlguien tiene un control activeX para imprimir codigos de barras (EAN13) en Access, que me pueda pasar...O bien un link de donde me lo pueda bajar.Gracias... :-)

---En http://www.abaforum.es/users/1046/abarcode/index.htm te puedes bajar unprograma excepcional, pero es shareware.

OUTLOOK EXPRESS Y ACCESS¿Qué parametro debo pasarle al outlook para que al pulsar un botón en unformulario de access me habra el outlook pero sólo la ventana de enviarnuevo correo? Muchas gracias de antemano.

E-Mail: [email protected]

---

Hola

Por código:dim oOutLook as New OutLook.ApplicationDim oMensaje as OutLook.MailItemSet oMensaje=oOutLook.CreateItem(olMailItem)oOutLook.visible=true

Saludos Quim

INSTALAR ACCESS 97 SI YA HAS INSTALADO ACCESS 2000Si ya tienes instalado Access 2000 y quieres instalar Acces97 y quefuncionen los dos sigue los pasos:

1. Buscar fichero Hatten.ttf y renamearlo a Hatten.sav para no recibir elmensaje " No license ........"

2. Buscar el fichero Msaccess.exe y renamearlo a Msaccess.2k . Antes derenamearlo confirma que la versión de Msaccess.exe es 9,0x presionando elboton derecho en el fichero y mostrar propiedades. Click Versión

3. Instala Access 97

4. Durante la instalación, cuando te pregunte en que directorio instalar,cambia por ejemplo a C:\Archivos de Programas\Microsoft Officce97\

5. despues de finaliza la instalación, busca Msaccess.2k y vuelvelo a llamarMsacces.exe. Tambien busca Hatten.sav y vuelvelo a llamar Hatten.ttf

Un saludo desde el Ayuntamiento de Burgos

Page 41: Cuestiones Access1

---EVITAR PANTALLAZOSHola, he creado unos botones para alternar la vista de diversos formularios. Para que latabla se actualice al cambiar de un formulario a otro en la macro " Ir a Formulario tal"asociada al botón correspondiente he colocado Cerrar/Abrir fornulario tal/Maximizar.Luego he desmarcado en Herramientas/Inicio todas las opciones.pues bien al ejecutarlo funciona bien, actualiza los campos en cada cambio de pantalla,pero se ven unos "pantallazos rápidos" que deben de ser la ejecución de la Macro.

¿Sabésis como puedo evitarlo? Gracias por vuestra ayuda

Barley---

establece eco a noo por codigo docmd.echo falseal final vuelvelo a poner a true o no veras nadaUn saludo JavaTex

ACTIVAR/DESACTIVAR LA TECLA SHIFT

Esto lo recogi de estas news :

Para deshabilitar/habilitar la tecla shift se usa (por lo menos yo elsiguiente código):

Sub DES()MsgBox ("entrando ....")On Error GoTo ERROR1MsgBox ("alla voy ....")Dim DB As DatabaseDim PROP As PropertyConst NOENCONTRADO = 3270Set DB = CurrentDb()' Poner aquí debajo False para desactivar el SHIFT y TRUE para ActivarloDB.Properties("ALLOWBYPASSKEY") = FalseExit SubERROR1:If Err = NOENCONTRADO ThenSet PROP = DB.CreateProperty("ALLOWBYPASSKEY", dbBoolean, False)DB.Properties.Append PROPMsgBox ("Propiedad creada")Resume NextElseMsgBox "ESTO NO FUNCIONA"Exit SubEnd IfEnd Sub

SITIOS DONDE ENCONTRAR EJERCICIOS Y MANUALES DE ACCESS

www.abaforum.es/users/1046/access.htmwww.areaint.com/Curso_Access.htmwww.lawebdelprogramador.com

Page 42: Cuestiones Access1

DAR VALOR A UN CAMPO DEPENDIENDO DEL VALOR DEL OTRO

Necesito que cuando introduzco en el campo NUMERO un número de seriede un equipo, el campo TIPO se rellene automaticamente ya que todoslos equipos cuyo número empieza por 1 son del tipo AKE; los que cuyonúmero de serie empiezan por 4 son siempre del tipo DPQ; y así etc.

He intentado con la sentencia SiInm[NUMERO]=1???.... etc pero no meacepta los comodines, luego he probado con >y<, ahí si funciona perohay un TIPO que su número empieza por 06 y hay falla, y por otro ladose rellena el campo pero no consigo rellenar el campo del formulariopero no consigo relacionarlo con el campo correspondiente de la tabla.

En fin, no se si me habre conseguido explicar... de todos modosgracias por tu interés.

Paco---En el formulario metes el campo tipo y el campo numero, el campo numero debeser de tipo texto, pues por lo ke veo metes numeros que empiezan por 0(cero) y es un nº de serie. por lo ke veo en el formulario has metido uncuadro de texto independiente y por eso te aparece el tipo en el formulariopero no se almacena en la tabla, al cuadro de texto tipo del firmulariocomprueba que su origen de control sea tipo: suponiendo estoEn el evento despues de actualizar el campo numero entras en codigo y lepones

if isnull(numero) then exit subIf numero Like "1*" Thentipo = "AKE"ElseIf numero Like "2*" Thentipo = "valorde los 2"ElseIf numero Like "3*" Thentipo = "valorde los 3"ElseIf numero Like "4*" Thentipo = "valorde los 4"Elsetipo = "tipodesconocido"End If

Si tienes algun problema dimelo porque es sencilloUn saludo JavaTex

IMPRIMIR DESDE ACCESS UN DOCUMENTO DE WORD

Hay varias formas de hacerlo, una de ellas sin necesitar referenciarbibliotecas sería: crea una sub en un modulo y ejecutala donde te interese,la sub es la siguiente (crea un modulo y pega eso dentro de el)Sub ImpriWord()

Dim Apli As Object, i As IntegerDim Mydoc As ObjectSet Apli = CreateObject("Word.Application")Apli.Visible = TrueSet Mydoc = Apli.documents.Open(FileName:="c:\pru.doc")Mydoc.PrintOutFor i = 1 To 100DoEventsNext iApli.Quit

Page 43: Cuestiones Access1

End Sub

Notas: Donde pone C:\pru.doc ponle tu documento a imprimirapli.visible=true -> esa linea borrala si no kieres ke se vea el procesoLo del bucle con el doevents ya se ke es un poco chapucero, pero detectarcuando word termino de imprimir para cerrarlo es un poco mas complejo y conese bucle da tiempo a imprimir, si tu documento fuera muy largo aunmenta el100.Si tu documento tiene macros y tienes activado lo de las macros al abrirlopreguntaria lo de si quieres abrir el documento con macros

Espero que te sirva, un saludo JavaTexSi tienes dudas me lo dices, aunque a mi esa sub me funciono a la primera

SIN TITULO

Veamos, tengo un formulario continuo, y un campo es calculado, pues bien,quiero que el valor deese campo dependa del valor que tiene en el registro anterior, mirar elejemplo

CAMPO1 CAMPO2 CAMPO3 (=CAMPO3anterior+CAMPO2)------ ------ ------Pepe 5000 5000Antonio 2000 7000Paco 8000 15000

¿Se entiende?, mi gran problema es pues como referencio al CAMPO3anterior,bueno, muchas graciasa todos. Un Saludo.

---Supongamos que en la tabla que contiene Campo2 hay tambien un campo llamadoid que es autonumericocrea un cuadro de texto y en origen de control ponle (supongamos ke se llamaacumulado)=DSuma("[Campo2]";"[NombreTablaquecontieneCampo2]";"id<=" & [id])

Nota: en el evento al activar registro del formulario ponleacumulado.requery

Un saludo JavaTex

POSICION EN FORMULARIO EN FUNCION DE CAMPOEstoy haciendo una base de datos sobre equipos de futbol, gestionandocompeticiones, clasificaciones, etc

El problema llega cuando en un formulario "Clasificación" quiero poner laposición.Los registros van cambiando de orden según los puntos que tengan los equiposy yo lo que quiero es que haya un campo independiente que me ponga de arribaa abajo las posiciones (1,2......n). Igual es una tontería pero no se comohacerlo.

---Supongamos que el formualrio tienes un campo numerico llamado puntos (y queel control que lo muestra tambien se llama puntos) que son los puntos de

Page 44: Cuestiones Access1

cada equipo, y que el formulario se supone vendra ordenado por ese campo.Crea un cuadro de texto en el formulario en cuyo origen de control ponle=Pos()

Entra en codigo y pon

Function Pos()If IsNull(puntos) Then Exit FunctionPos=DCount("*", "NombreTabladeclasificaciones", "puntos>" & puntos)end function

Nota: al añadir un registro deberas hacer un requery de ese cuadro de textoUn saludo JavaTex