Lotus Notes - GetDocumentByKey(XXX, True)

 
Vista:
Imágen de perfil de Alejandro

GetDocumentByKey(XXX, True)

Publicado por Alejandro (22 intervenciones) el 21/10/2015 14:55:37
Que es la key???

Necesito pasar el valor de un campo en un documento a otro campo de otro documento en Web.

Tengo una vista ordenada por nombre de libro y necesito obtener algunos campos del documento para introducirlos en otro pero me da error al encontrar el documento con la instrucción:

Set doc1 = view1.GetDocumentByKey( doc.codigoPrestamo(0), True )
If doc1 Is Nothing Then
Print "No se ha encontrado el documento doc1"
Exit Sub
End If

siendo codigoPrestamo el primer campo del formulario y la primera columna de la vista.

Un saludo y gracias.
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

GetDocumentByKey(XXX, True)

Publicado por ElLobo (56 intervenciones) el 21/10/2015 15:11:26
Lo mas seguro es que te falta marcar la primera columna como ordenada.
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
Imágen de perfil de Alejandro

GetDocumentByKey(XXX, True)

Publicado por Alejandro (22 intervenciones) el 21/10/2015 18:49:12
Lo he comprobado pero no encuentra el documento. Esto es lo que tengo:

1
2
3
4
5
6
Set doc = session.DocumentContext
 
Set view1 = db.GetView( "Libros alquilados" )
	If view1 Is Nothing Then
		Print "No se ha encontrado la vista"
	End If

Libros alquilados es el nombre de la vista cuyos campos quiero rellenar con datos de otros campos que ya tengo

1
2
3
4
5
Set doc1 = view1.GetDocumentByKey( doc.libroPrestamo(0), True )
If doc1 Is Nothing Then
	Print "No se ha encontrado el documento doc1"
	Exit Sub
End If

libroPrestamo es el primer campo del formulario.

Creo que no entiendo muy bien el concepto de key en este caso o algo se me está escapando.
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

GetDocumentByKey(XXX, True)

Publicado por ElLobo (56 intervenciones) el 21/10/2015 21:21:29
Primero comprobar que buscas

MsgBox doc.libroPrestamo(0)

Segundo y como te comente antes debes en diseño de la vista (Libros alquilados) decirle que la primera columna esta ordenada.


Prueba

Set doc1 = view1.GetDocumentByKey( "<aqui valor a fuego a buscar>", True )

Nota:

Da igual la posicion del campo en el documento. El esta buscando un valor en la vista

Ejemplo

oDoc.Buscar = "Alicia en el pais de las Maravillas"

sValor = oDoc.Buscar (0)

Set doc1 = view1.GetDocumentByKey( sValor , True )

La primera columna de la vista "Libros alquilados" debe estar marcada como ordenada ASC/DESC como quieras o category

Sino no encontrara nada porque no hay indice.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Alejandro

GetDocumentByKey(XXX, True)

Publicado por Alejandro (22 intervenciones) el 21/10/2015 21:48:47
Entiendo!! Hago todo tal cual me comentas pero no encuentra el documento ni muestra valor

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
Sub Initialize
 
	Dim session As New NotesSession
	Dim db As NotesDatabase
	Dim view As NotesView
	Dim doc As NotesDocument
	Dim valor As Integer
 
REM Decrementa numero de libros en uno tras realizar prestamo
	Dim docLibro As NotesDocument
	Dim alquilerCorrecto As String
	Dim noUnidades As String
 
REM No permite repetir préstamo de mismo libro
	Dim docPrestamos As NotesDocument
	Dim prestamos As Integer
	Dim agotados As String
 
REM Acceder a campos de usuario concreto
	Dim view1 As NotesView
	Dim doc1 As NotesDocument
	Dim libro As String
	Dim fecha As Variant
	Dim dni As String
	Dim nombre As String
 
	On Error Goto errores
 
	Set db = session.CurrentDatabase
	If db Is Nothing Then
		Print "No se ha encontrado la base de datos"
	End If
 
REM Es necesario crear una nueva vista ordenada por titulo de libros
	Set view = db.GetView( "Libros por Titulo" )
	If view Is Nothing Then
		Print "No se ha encontrado la vista"
	End If
 
REM Hago referencia al documento actual
	Set doc = session.DocumentContext
 
REM Guardo en la variable el documento que me interesa
REM La vista debe estar ordenada por titulo del libro y libroPrestado debe ser el primer campo en el documento
	Set docLibro = view.GetDocumentByKey( doc.libroPrestado(0), True )
	If docLibro Is Nothing Then
		Print "No se ha encontrado el documento"
		Exit Sub
	End If
 
	agotados = |<head>
				<style>body{font: bold 14px Sans-Serif;color:black}.celdaInicio{text-align: center;align: center;color: black; font-size: 20;   width: 100%;height: 100 px;vertical-align: middle;font: bold 25px Helvetica, Sans-Serif;} .botonSalir{align: center;text-align: center; background-color: #DeDeDe; width: 100px; padding: 10px 25px 10px 25px; font-family: Verdana, sans-serif; font-size: 14px; text-decoration: none; color: #000000; border: 1px solid #000000; border-radius: 9px; -moz-border-radius: 9px; -webkit-border-radius: 9px;}</style>
				</head>
				<body><TABLE class=tablaInicio width="100%" border=1><TBODY><TR vAlign=top><TD width="50%"><DIV align=center><IMG src="/ceres.nsf/c30b018cd22385a4c1257ede0020d8ae/$Body/0.218?OpenElement&amp;FieldElemFormat=jpg" width=200 height=140></DIV></TD><TD class=celdaInicio width="50%">Biblioteca Pública de Cataluña</TD></TR></TBODY></TABLE></br></br>Ha agotado el número de préstamos esta semana.</br></br>Vuelva a intentarlo más adelante.</br></br><div align="center"><input class="botonSalir" onclick="window.close();" type="button" value="Salir"></input></div>
				</body>|
 
	prestamos = Cint(docLibro.numPrestamos(0))
	If prestamos = 0 Then
		prestamos = prestamos + 1
		docLibro.numPrestamos = Cstr(prestamos)
	Else
		Print agotados
		Exit Sub
	End If
 
	alquilerCorrecto = |<head>
				<style>body{font: bold 14px Sans-Serif;color:black}.celdaInicio{text-align: center;align: center;color: black; font-size: 20;   width: 100%;height: 100 px;vertical-align: middle;font: bold 25px Helvetica, Sans-Serif;} .botonSalir{align: center;text-align: center; background-color: #DeDeDe; width: 100px; padding: 10px 25px 10px 25px; font-family: Verdana, sans-serif; font-size: 14px; text-decoration: none; color: #000000; border: 1px solid #000000; border-radius: 9px; -moz-border-radius: 9px; -webkit-border-radius: 9px;}</style>
				</head>
				<body><TABLE class=tablaInicio width="100%" border=1><TBODY><TR vAlign=top><TD width="50%"><DIV align=center><IMG src="/ceres.nsf/c30b018cd22385a4c1257ede0020d8ae/$Body/0.218?OpenElement&amp;FieldElemFormat=jpg" width=200 height=140></DIV></TD><TD class=celdaInicio width="50%">Biblioteca Pública de Cataluña</TD></TR></TBODY></TABLE></br></br>Su solicitud ha sido realizada correctamente.</br></br>Gracias por su visita.</br></br><div align="center"><input class="botonSalir" onclick="window.close();" type="button" value="Salir"></input></div>
				</body>|
 
	noUnidades = |<head>
				<style>body{font: bold 14px Sans-Serif;color:black}.celdaInicio{text-align: center;align: center;color: black; font-size: 20;   width: 100%;height: 100 px;vertical-align: middle;font: bold 25px Helvetica, Sans-Serif;} .botonSalir{align: center;text-align: center; background-color: #DeDeDe; width: 100px; padding: 10px 25px 10px 25px; font-family: Verdana, sans-serif; font-size: 14px; text-decoration: none; color: #000000; border: 1px solid #000000; border-radius: 9px; -moz-border-radius: 9px; -webkit-border-radius: 9px;}</style>
				</head>
				<body><TABLE class=tablaInicio width="100%" border=1><TBODY><TR vAlign=top><TD width="50%"><DIV align=center><IMG src="/ceres.nsf/c30b018cd22385a4c1257ede0020d8ae/$Body/0.218?OpenElement&amp;FieldElemFormat=jpg" width=200 height=140></DIV></TD><TD class=celdaInicio width="50%">Biblioteca Pública de Cataluña</TD></TR></TBODY></TABLE></br></br>No existen unidades disponibles de este libro en este momento.</br></br>Gracias por su visita.</br></br><div align="center"><input class="botonSalir" onclick="window.close();" type="button" value="Salir"></input></div>
				</body>|
 
REM Realizo el decremento del numero de libros
	valor = Cint(docLibro.num(0))
	If valor > 0 Then
		valor = valor - 1
		docLibro.num = Cstr(valor)
		Print alquilerCorrecto
	Else
		Print noUnidades
	End If
 
	doc1.libroPrestamo = libro
	doc1.fechaPrestamo = fecha
 
	Set view1 = db.GetView( "Libros alquilados" )
	If view1 Is Nothing Then
		Print "No se ha encontrado la vista"
	End If
 
	libro = Cstr(docLibro.txtTitulo(0))
	fecha = Cstr(docLibro.fechaAhora(0))
 
	Set doc1 = view1.GetDocumentByKey( doc.libroPrestamo(0), True )
	If doc1 Is Nothing Then
		Print "No se ha encontrado el documento doc1"
		Exit Sub
	End If
 
REM Guardo los cambios en el documento
	Call docLibro.Save(True, True)
 
	Exit Sub
errores:
	Print "<br>" & Str(Err) & ": " & Error$ & " on line: "  & Cstr(Erl)
 
End Sub
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
Imágen de perfil de Alejandro

GetDocumentByKey(XXX, True)

Publicado por Alejandro (22 intervenciones) el 05/11/2015 08:45:03
Ya lo tengo!!! Estaba confundiendo las claves.

Muchas gracias.

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