Skip to Main Content
HCL Domino Ideas Portal

Welcome to the #dominoforever Product Ideas Forum! The place where you can submit product ideas and enhancement request. We encourage you to participate by voting on, commenting on, and creating new ideas. All new ideas will be evaluated by HCL Product Management & Engineering teams, and the next steps will be communicated. While not all submitted ideas will be executed upon, community feedback will play a key role in influencing which ideas are and when they will be implemented.

For more information and upcoming events around #dominoforever, please visit our Destination Domino Page

Status Under Consideration
Workspace Domino Designer
Categories Views
Created by Guest
Created on Jan 31, 2019

EmbeddedView by Formula

Enables to embed Views (Server!!Database!!View) from different databases. Today embedded views are linked by replicaId, So if you distribute applications by template - the embedded view points to the test / development application, Which is annoing and unprofessional.

  • Attach files
  • Guest
    Reply
    |
    Oct 26, 2023

    I hope this will be implemented soon.

    Here an example to do it in the xml of a subform, with embedded views of 3 different databases (my real source code have embedded views out of 9 different databases).

    Use your own error handling :o)

    '/**

    ' * CopyEmbeddedViews in target subform.

    ' * @copyright ProVis GmbH (you can use it free)

    ' * @author Stefan Kieckbusch

    ' * @version 2023-10-26

    ' */

    Sub Initialize

    On Error GoTo ERROR_HANDLING

    Const INDEX_TODO = 0

    Const INDEX_DOC = 1

    Const INDEX_COMM = 2

    Const INDEX_NOREPLACE = 3

    Dim s as New NotesSession

    Dim db as NotesDatabase : Set db = s.CurrentDatabase

    ' Set new target view databases

    Dim dbProVeToDo As NotesDatabase : Set dbProVeToDo = s.Getdatabase(db.Server, "Directory/ProVeToDo.nsf, False)

    Dim dbProVeDoc As NotesDatabase : Set dbProVeDoc = s.Getdatabase(db.Server, "Directory/ProVeDoc.nsf, False)

    Dim dbProVeComm As NotesDatabase : Set dbProVeComm = s.Getdatabase(db.Server, "Directory/ProVeComm.nsf, False)

    ' Get database replic ids of development databases

    Dim strReplicIDProVeToDo As String : Let strReplicIDProVeToDo = "C12573470049F374"

    If (Not dbProVeToDo Is Nothing) Then Let strReplicIDProVeToDo = dbProVeToDo.Replicaid

    Dim strReplicIDProVeDoc As String : Let strReplicIDProVeDoc = "C1257994004F4295"

    If (Not dbProVeDoc Is Nothing) Then Let strReplicIDProVeDoc = dbProVeDoc.Replicaid

    Dim strReplicIDProVeComm As String : Let strReplicIDProVeComm = "C1257996003E2165"

    If (Not dbProVeComm Is Nothing) Then Let strReplicIDProVeComm = dbProVeComm.Replicaid

    ' Source array

    Dim arr_strSource(INDEX_NOREPLACE) As String

    Let arr_strSource(INDEX_TODO) = "database='C12573470049F374'" ' dbProVeToDo

    Let arr_strSource(INDEX_DOC) = "database='C1257994004F4295'" ' dbProVeDoc

    Let arr_strSource(INDEX_COMM) = "database='C1257996003E2165'" ' dbProVeComm

    Let arr_strSource(INDEX_NOREPLACE) = "insertdialog='false'"' "fromtemplate='ProVeSys'"

    ' Templateeintrag durch noreplace ersetzen

    Dim arr_strTarget(INDEX_NOREPLACE) As String

    Let arr_strTarget(INDEX_TODO) = "database='" & strReplicIDProVeToDo & "'"

    Let arr_strTarget(INDEX_DOC) = "database='" & strReplicIDProVeDoc & "'"

    Let arr_strTarget(INDEX_COMM) = "database='" & strReplicIDProVeComm & "'"

    Let arr_strTarget(INDEX_NOREPLACE) = "insertdialog='false' noreplace='true'"

    ' Get source stream of subform "StandardEmbeddedViews" and replace database replica id

    ForAll Form In db.Forms

    If (IsArray(Form.Aliases)) Then

    If (Form.Aliases(0) = "StandardEmbeddedViews") Then

    Dim nc As NotesNoteCollection : Set nc = db.CreateNoteCollection(False)

    Call nc.Add(Form)

    Dim streamSource As NotesStream : Set streamSource = s.CreateStream

    Dim dxlExporter As NotesDXLExporter : Set dxlExporter = s.CreateDXLExporter(nc, streamSource)

    Call dxlExporter.Process

    ' Zielstream erzeugen und mit umberechneten Quellstream setzen

    Dim streamTarget As NotesStream : Set streamTarget = s.CreateStream

    Let streamSource.Position = 0

    If (InStr(streamSource.Readtext, "noreplace='true'")) Then

    Let arr_strTarget(INDEX_NOREPLACE) = "insertdialog='false'"

    Else ' InStr(streamSource.Readtext, "noreplace='true'")

    Let arr_strTarget(INDEX_NOREPLACE) = "insertdialog='false' noreplace='true'"

    End If ' InStr(streamSource.Readtext, "noreplace='true'")

    Let streamSource.Position = 0

    Call streamTarget.Writetext(Replace(streamSource.Readtext, arr_strSource, arr_strTarget))

    ' Subform in allen Apps ersetzen

    Dim docApp As NotesDocument : Set docApp = dc.Getfirstdocument()

    While (Not docApp Is Nothing)

    ' Kundendatenbank holen

    Dim dbApp As NotesDatabase : Set dbApp = s.GetDatabase(db.server, docApp.Getitemvalue("Path_App")(0), False)

    If (Not dbApp Is Nothing) Then

    Print dbApp.Title

    Dim dxlImporter As NotesDXLImporter : Set dxlImporter = s.CreateDXLImporter(streamTarget, dbApp)

    Let dxlImporter.CreateFTIndex = True

    Let dxlImporter.ReplaceDBProperties = False

    Let dxlImporter.ReplicaRequiredForReplaceOrUpdate = False

    Let dxlImporter.ACLImportOption = DXLIMPORTOPTION_REPLACE_ELSE_IGNORE

    Let dxlImporter.DesignImportOption = DXLIMPORTOPTION_REPLACE_ELSE_CREATE 'DXLIMPORTOPTION_CREATE

    Call dxlImporter.Process

    Set dxlImporter = Nothing

    End If ' dbApp Is Nothing Then

    Set docApp = dc.GetNextDocument(docApp)

    Wend ' Not docApp Is Nothing

    End If ' Form.Aliases(0) = "StandardEmbeddedViews"

    End If ' IsArray(Form.Aliases)

    End ForAll ' Form In dmThis.db.Forms

    MessageBox "StandardEmbeddedViews in " & dc.Count & " databases set. Plrase sign the databases.", MB_OK + MB_ICONINFORMATION, DIALOG_TITLE

    Exit Sub ' Initialize

    ERROR_HANDLING:

    If (dxlImporter Is Nothing) Then

    Call handleError(DESIGN_AGENT & ": Design\Set StandardEmbeddedViews", ERR_OPT_PRINT, Nothing)

    Else ' dxlImporter Is Nothing

    MessageBox dxlImporter.Log

    Let streamTarget.Position = 0

    MessageBox streamTarget.Readtext

    Call handleError(DESIGN_AGENT & ": Design\Set StandardEmbeddedViews\" & dxlImporter.Log, ERR_OPT_PRINT, Nothing)

    End If ' dxlImporter Is Nothing

    Exit Sub ' Initialize

    End Sub ' Initialize

  • Guest
    Reply
    |
    Nov 24, 2022

    To work around the problem, we use very small subforms that only contain view embeddings. We will then fix them in the target database and prohibit them from the design. Then it is possible to repeatedly refresh the database design.


    But it needs to be fixed so that the target can be defined by a formula.

  • Guest
    Reply
    |
    Nov 17, 2022

    We're almost 4 years later and this is still just under consideration?! Come on HCL. Please make this happen. I don't care about Nomad. My only wish regarding Notes/Domino if I could just ask for one thing would be this. I've been a notes developer for 20 years now so I wouldn't ask if it weren't that much of an annoyance. 87 votes isn't enough? DQL was a breakthrough but that makes my need for this even bigger since I can finally split my 1 million documents over multiple databases. The result being that I have more embedded view but also more frustration because of this!! I would pay for this solution!!!!

  • Guest
    Reply
    |
    Aug 18, 2022

    Whoever gave the tip about the DXL workaround, thank you thank you thank you. Apparently we cannot know each other's names here, we're all guests, so Guest, thanks for saving me 'again' hours of frustration. And HCL, please fix this. If I can make it work in 15 minutes using a dxl workaround it should only take you 10 minutes to add a database property so we can change the source. The principle already exists for other elements in Notes. I've added a notepad file here with the code on how to do it. Hope it helps others hours of frustration as well.

  • Guest
    Reply
    |
    Jul 26, 2022

    Same thing for ressources like images. As a matter of fact, in framesets, the database can be computed. It should be the same in any element that can be chosen in another database.

  • Guest
    Reply
    |
    May 19, 2022

    It is very frustrating that this is still not possible.

  • Guest
    Reply
    |
    Apr 21, 2022

    Embedded views are great, except you can not specify Server and Database. Please fix !

  • Guest
    Reply
    |
    Feb 17, 2022

    We really need this.. Don't consider this, just make it happen PLEASE. It gives me so much more work not having this simple improvement. I also have like 20-30 embedded views and need to manually adjust them after each template update. It gets really frustrating after a while.. Years go by and no solution.. This would make me really happy!

  • Guest
    Reply
    |
    Nov 13, 2020

    Yes please.

    This would be a great feature.

  • Guest
    Reply
    |
    Oct 9, 2020

    That would be great. I have a work around,
    I have databases that have 16 embedded views from other databases. I wrote a lotus script agent that exchanges the database property of each view with dxl. However, the form or subform property 'prohibit design refresh or replace to modify' must be set.
    I can send the script.

  • Guest
    Reply
    |
    Jun 3, 2020

    Yes! Yes! Yes!

    In framesets and outlines, the database formula for embedded elements was implemented for about 20 years ago, but not in embedded views. There were lots of same suggestions on IdeaJam, but it did not bring any result. I'm developer, and I do not find any reasonable grounding for this...

  • Guest
    Reply
    |
    Dec 23, 2019

    Yes.  We have a commercial case management software for prosecutors with about 40 embedded views to other databases.    This means after each upgrade, we have to manually fix 40 embedded views which can take a few hours.  Clearly this is not ideal.

  • Guest
    Reply
    |
    Dec 2, 2019

    We really need this one too. Should be a low hanging fruit.

  • Guest
    Reply
    |
    Aug 12, 2019

    Missing for soooo long - there was actually a note from someone at IBM in the R6 or something timeframe that this is the next thing he would add, and there was rumors, that this can allready done via dxl roundtripping - discussing the later one, my customer said, they wont accept such a technology in production in this case.