23 mayo 2006

WSS- Para la integración de Sharepoint con infopath, utilizamos las listas de documentos, y una plantilla de infopath para la creación de estos.
Si deseamos exportar registros de access a sharepoint, a una lista de documentos, podemos utilizar el siguiente código.

Tendremos que mirar como es el esquema xml de los documentos que crea la plantilla de infopath

Private Sub Comando0_Click()
Dim dbs As Database
Dim rst As Recordset
Dim strSQL As String
Dim intOption As Integer
Dim Ofile As Object
Dim Promo As String
Dim aux1 As String


Set dbs = CurrentDb()
strSQL = "SELECT * FROM Proveedores "
Set rst = dbs.OpenRecordset(strSQL)


While (Not (rst.EOF))
‘’Campo para crear el directorio
Promo = Replace(rst(1).Value, " ", "")

If Promo <> aux1 Then
MkDir "C:\XML\" & Replace(rst(1).Value, " ", "")
aux1 = Replace(rst(1).Value, " ", "")
End If

Set fs = CreateObject("Scripting.FileSystemObject")

Set Ofile = fs.CreateTextFile("C:\XML\" & Replace(rst (1).Value, " ", "") & "\" & _
Replace(Replace(rst(0).Value, ".", ""), """", "") & ".xml", True)

file = "" ''el archivo XML
Ofile.WriteLine (file)
Ofile.Close

rst.MoveNext
Wend

' Cerrar el conjunto de registros y la base de datos.
rst.Close
dbs.Close



End Sub

15 mayo 2006

Recientemente he montado una pequeña aplicación en access.
Para economizar en el uso de formularios creé uno que me servia tanto paradar de altas como para consultar un dato, nada fuera de lo normal,no?.

El truki consistia en el uso del filtro como detector del origen, si era paradar un alta el form se comportaba de una forma y si por el contrario llevaba filtrode otra.

La sorpresa viene que más de una vez me encontraba con que el form se comportaba al dar de alta como si llevara filtro, y es que realmente lo tenia.

La solución me la dió Arvin Meyer [MVP] con el siguiente código

Private Sub Form_Unload(Cancel As Integer)
Me.Filter = ""
Me.OrderBy = ""
DoCmd.RunCommand
acCmdSave
End Sub

Al salir del formulario limpiar los form...Funcionó!!!

Al final, parece que Access se lia un poco con la desactivación/activación de ellos, algo que debe ir arrastrando desde elaccess 97.

Utilizando el código que me pasó Arvin y quitando todos los filteron que he entrotadola aplicación funciona (al menos esto)
Salu2

(Vaya lunes que llevo hoy)

12 mayo 2006

Bienvenido, este es blog de conocimiento que voy a crear para introducir mis códigos y cosillas que iré viendo en mi corta carrera profesional.
Empiezo hoy... Ya veremos hasta donde llego

Saludos
WSS.- Esta semana he estado probando como desde un formulario de Sharepoint de una lista crear y vincular datos a un documento word.
Lo primero que he hecho a sido modificar el aspx que está dentro de la lista.
Dentro del documento hay diferentes zonas de interes, en este caso, la que me interesaba es el webpart de los campos, ya que son estos los que quiero pasar al documento de word.

Publicando este webpart, le he añadido un link al documento de word, que antes he subido dentro de la lista. Cuando me refiero a esto, no es una lista de documentos si no a la carpeta donde están alojados los 4 aspx que se encargan de la entrada, edición etc... de los datos de la lista.

Al formulario le he añadio este javascript, que crea el documento y añade los valores a las variables:

function loadworddoc()
{
var oApplication=new ActiveXObject("Word.Application");
var i;
var doc;
var fld;

i = document.URL.lastIndexOf("/");
doc = document.URL.substring(0,i).concat("/Inf.doc");
oApplication.Documents.Open(doc);
for (ifld = 0; ifld < frm.ifldMax; ifld++)
{
fld = frm.rgfld[ifld];
for (i=0;i {
if (document.forms(0).elements(i).name == ("urn:schemas-microsoft- com:office:office#" + fld.stName))
{
oApplication.ActiveDocument.Variables(fld.stName).Value = "";
}
}
}

oApplication.Run("Actualiza");
oApplication.Visible=true
}

Dentro del documento de word, añadimos los variables. Para añadirlas, dentro del documento que utilizamos como plantilla, en insertar--> campo --> En categoría elegimos automatización y dentro de esta DocVariable, en nombre de la variable tiene que ser el mismo nombre del campo de la lista de Sharepoint.

Hay que tener en cuenta que para los tipos hidden (o Dropdownlist en .net) no recoge los datos que introducimos de esta manera... No me he metido en profundidad en esto pero es algo que lo tengo como pendiente.

Ahora cada vez que hacemos clic en ese link se abrirá el documento de word que tenemos como plantilla y pasaremos los datos que contienen los campos de las listas.

También he utilizando el rollup de Carlos Segura Sanz (http://www.ideseg.com) . Solo añado lo que seria el xls, por que considero que es donde está todo el tema...

script language="javascript"
function loadworddoc()
{
var oApplication=new ActiveXObject("Word.Application");
var i;
var doc;

i = document.URL.lastIndexOf("/");
doc = document.URL.substring
(0,i).concat"/Lists/Proveedores/Inf.doc");
oApplication.Documents.Open(doc);
oApplication.ActiveDocument.Variables("campo1").Value = ' ="campo1"/>';
oApplication.ActiveDocument.Variables("campo2").Value = ' ="campo2"/>';
oApplication.ActiveDocument.Variables("campo3").Value = ' ="campo3"/>';
oApplication.Run("Actualiza");
oApplication.Visible=true
}
/script
table
tr
td
a href="javascript:loadworddoc()"
img src="_layouts/images/icdoc.gif" border="0"
/a
td
td
p Informe de Aceptación /p
/td
/tr
/table

El actualiza es una macro que está dentro del documento de word para actualizar los datos del word, ya que si no no se refrescan los datos.