Access - alguien sabe como abrir un formulario desde codigo xml

   
Vista:

alguien sabe como abrir un formulario desde codigo xml

Publicado por tony (10 intervenciones) el 10/10/2007 19:07:07
alguien sabe como abrir un formulario desde codigo xml?? ejemplo tengo este codigo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
  <ribbon startFromScratch="false">
    <tabs>
      <tab id="dbCustomTab" label="ADMINISTRACIÓN" visible="true">
        <group id="dbCustomGroup" label="NOMINA">
         <button id="button1" label="Nomina" onAction="nomina_ingresar"/>
        </group>
        <group id="dbCustomGroup2" label="Another Custom Group">
          <control idMso="ImportExcel" label="Import from Excel" enabled="true"/>
          <control idMso="ExportExcel" label="Export to Excel" enabled="true"/>
        </group>
      </tab>
    </tabs>
  </ribbon>
</customUI>
quiero que al hacer click en esta etiqueta
<button id="button1" label="Nomina" onAction="nomina_ingresar"/>
abra un formulario que se llama "nomina_ingresar"

gracias por su ayuda
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:xml

Publicado por Chea (1015 intervenciones) el 10/10/2007 21:47:41
Vaya, acabo de escribir en otro hilo que nunca he visto una pregunta concreta sobre el Ribbon y ahora veo ésta. :-)

OnAction representa el procedimiento o callback que se ejecuta cuando pulsas el botón. Debes crearte un procedimiento con el mismo nombre que pongas en el argumento, en este caso el procedimiento se llamaría nomina_ingresar.

Sin embargo, como lo que quieres es pasar el nombre de un formulario, podemos meter como argumento de OnAction el nombre de un procedimiento general que usemos para abrir formularios y en la propiedad Tag el nombre del formulario. En el xml quedaría así:

<button id="button1" label="Nomina" onAction="onOpenFormEdit" Tag ="nomina_ingresar"/>

Y luego necesitamos tener en nuestra BD un procedimiento tal como éste:

Public Sub onOpenFormEdit(control As IRibbonControl)
' open the form in edit mode
DoCmd.OpenForm control.Tag, , , , acFormEdit
End Sub

Supongo que ya sabrás que el XML lo tienes que meter en el campo RibbonXml de la tabla UsysRibbons que debes crearte. Para crearla directamte, puedes usar:

CurrentDb.Execute "CREATE TABLE USysRibbons( RibbonName Text(255) CONSTRAINT PrimaryKey PRIMARY KEY, RibbonXml MEMO);"

También debes cambiar las propiedades de la BD para ponerle en la propiedad "Nombre de la cinta de opciones" el que hayas dado al campo RibbonName en el registro donde hayas metido el XML. Puedes hacerlo usando las propiedades de la BD o, directamente, ejecutando en la ventana de inmediato:

CurrentDb.Properties("CustomRibbonID") = "rbnOrders"

Saludos
José Bengoechea Ibaceta
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:xml

Publicado por tony (10 intervenciones) el 11/10/2007 13:37:48
hola nuevamente chea,gracias por tus respuesta la verdad es que me ha servido de mucho ya que no es muy comun ver ese tipo de respuestas o preguntas hacerca de los ribbon y las cintas de opciones,soy la misma persona que pregunto un poco mas abajo sobre las barras de menu personalizadas,muchisimas gracias por tu valioso apoyo chea
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:xml

Publicado por tony (10 intervenciones) el 11/10/2007 13:47:55
otra cosita que se me olvido preguntar,ya que me explicastes como abrir los formularios que era en principio lo que mas me importaba,estoy haciendo una aplicacion que segun los permisos que se le den a los usuarios quiero desabilitar algunas funciones,tomemos como ejemplo que yo dentro de mi aplicacion tengo 2 usuarios creados,chea y tony, supongamos que tony tiene todos los permisos pero chea tiene denegado el acceso al modulo de administracion,mi pregunta es dentro de la tabla USysRibbons,puedo tener 2 registros almacenados como por ejemplo uno llamado chea y otro llamado tony,si entras al sistema con usuario chea se cargue el xml de chea con el tab de administracion enabled=false y si entras como tony se cargue el xml de tony?? no se si me explique bien
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:xml

Publicado por Chea (1015 intervenciones) el 11/10/2007 15:33:25
No lo he hecho por lo que no puedo decirte cuál es la estrategia más apropidada.

De entrada, la propiedad CustomRibbonID sólo se tiene en cuenta al abrir la aplicación, por lo que tendrías que recurrir a otros sistema si quieres personalizar el Ribbon principal, utilizando el objeto iRibbon para acceder a sus propiedades o llamándolo con LoadRibbon, pero creo que sería más fácil dejar inalterable el Ribbon principal (incluso he visto algún ejemplo en que lo usan para introducir usuario y contraseña) y personalizar los de los formularios.

Los formularios también tienen una propiedad "Nombre de la banda de opciones", de manera que, por ejemplo en el evento Open del formulario, podrías cambiar ésta dependiendo de los permisos del usuario.

Supongo que ya habrás llegado a la conclusión de que esos Ribbon de los formularios se almacenan también en UsysRibbon. :-)

Saludos
José Bengoechea Ibaceta
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:xml

Publicado por tony (10 intervenciones) el 11/10/2007 16:27:30
saludos chea,estoy probando lo que me dijistes hacerca de abrir el formulario y aun colocando en un modulo este precedimiento me dice que no encuentra el procedimiento cuando le hago click a la etiqueta

tengo este codigo en el xml

1
<button id="opennomina" label="Nomina" tag="formu" onAction="abrirformulario"/>

y tengo esto en el modulo

1
2
3
public Sub abrirformulario(control As IRibbonControl)
DoCmd.OpenForm control.Tag, , , , acFormEdit
End Sub

he probado de todo,probe colocandolo asi

1
2
3
sub abrirformulario(control As IRibbonControl)
DoCmd.OpenForm control.Tag, , , , acFormEdit
End Sub

y en el xml cambiando la posicion del tag

1
<button id="opennomina" label="Nomina" onAction="abrirformulario" tag="formu"/>

el formulario que hice de prueba se llama formu pero siempre que le hago click a la etiqueta me dice que no encuentra el procedimiento

el codigo completo que tengo en el xml de ejemplo es este

1
2
3
4
5
6
7
8
9
10
11
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
  <ribbon startFromScratch="false">
    <tabs>
      <tab id="dbCustomTab" label="ADMINISTRACIÓN" visible="true">
        <group id="dbCustomGroup" label="NOMINA">
         <button id="opennomina" label="Nomina" onAction="abrirformulario" tag="formu"/>
        </group>
      </tab>
    </tabs>
  </ribbon>
</customUI>
me falta algo mas??
tengo que incluir alguna referencia especial en visual??

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:xml

Publicado por Noemi (2 intervenciones) el 23/06/2015 14:31:21
Hola chicos, estoy un poco desesperada. He probado y mil y una manera de abrir el formulario y siempre doy con el mismo error. Soy nueva en esto del xml y los ribbon y me estoy desesperando.
He probado todo lo que he encontrado por ahí googleando pero no doy con la respuesta.
El error es Asegurese de que la macro o función exista y que use los parametros correctos.
Estoy segura de que lo estoy haciendo bien pero no veo el error.

El código que tengo para ello es,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
   <commands>
       <command idMso="FileExit" enabled="false"/>
       <command idMso="ApplicationOptionsDialog" enabled = "false"/>
   </commands>
   <ribbon startFromScratch="true">
   <officeMenu>
         <splitButton idMso="FileSaveAsMenuAccess" visible="false"/>
         <button idMso="FileSaveAs" visible="false"/>
         <button idMso="FileSave" visible="false"/>
         <button idMso="FileCloseDatabase" visible="false"/>
         <button idMso="FileNewDatabase" visible ="false"/>
         <button idMso="FileOpenDatabase" visible="false"/>
         <button idMso="FilePackageAndSign" visible="false"/>
   </officeMenu>
   <tabs>
      <tab id="tabFicha1" label="Configuración1">
         <group id="grp01" label="Grupo1">
            <button id="btnControl1" size="normal" label="Contratas" screentip="Contratas" supertip="Contratas" imageMso="TrustCenter" onAction="BarraMenu"   />
         </group>
      </tab>
    </tabs>
    </ribbon>
</customUI>

Donde creo un botón llamado Contratas que debe abrir el formulario Contratas. Este llama al procedimiento publico BarraMenu.

Pero no me hace caso... ya no se por donde debo mirar.
A ver si me pueden echar un cable.
Muchas gracias por vuestra ayuda. Un saludo,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:xml

Publicado por Noemi (2 intervenciones) el 24/06/2015 08:23:37
No se si será la forma más acertada, pero lo he resuelto creando una macro que llama al formulario que intento abrir. La verdad es que es un poco tedioso crear una macro para cada formulario que debo de llamar pero funciona, y ahora es lo que me importa.

He reemplazado la llamada al formulario Contratas por la siguiente macro MenuRibbon.Contratas, donde contrata es una submacro de MenuRibbon.

<button id="btnControl1" size="normal" label="Contratas" screentip="Contratas" supertip="Contratas" imageMso="TrustCenter" onAction="MenuRibbon.Contratas"/>

Espero haber ayudado a alguien que se encuentre en mi misma situación.

Un saludo,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

xml

Publicado por Beto laguna_beto@hotmail.com (4 intervenciones) el 08/04/2016 21:34:34
Yo lo solucione desactivando la libreria y después activandola
Microsoft office 16.0object library

Y ya se compilo perfectamente ¡

Espero te ayude
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar