NotesDominoQuery (LotusScript)

Domino Query Language (DQL) のクエリーをコンパイル、調整、実行するための LotusScript クラスです。
 

プロパティ

MaxScanDocs

MaxScanEntries

NoViews

RebuildDesignCatalog

RefreshDesignCatalog

RefreshFullText

RefreshViews

DesignDocumentsOnly

TimeoutSec

メソッド

Execute

Explain

Parse

ResetNamedVariables

SetNamedVariable

CreateIndex

ListIndexes

RemoveIndex

言語相互参照

DominoQuery (Java)

 

 

DesignDocumentsOnly プロパティ

execute()メソッドとexplain() メソッドが設計ドキュメントのみを検索するかどうかを指定します。true に設定すると設計ドキュメントのみが検索され、false に設定すると通常通りデータドキュメントのみが検索されます。デフォルト値は false です。

データ型

Boolean

構文

dquery は NotesDominoQuery のオブジェクトです。

取得する:
Dim bDesignDocOnly as Boolean
       bDesignDocOnly = dquery.DesignDocumentsOnly
設定する:
 dquery.DesignDocumentsOnly = True

使用法

このプロパティを使用して、 execute() メソッドと explain() メソッドの検索対象を設計文書のみに制限するかどうかを制御します。

true に設定すると、設計文書のみが検索されます。false に設定すると、Notes 文書も検索されます。

注意: 次のいずれかのクエリ用語が使用されている場合、DQL は設計ドキュメントの検索を実行できません。

DesignDocumentsOnly プロパティが true に設定されているときに、これらのクエリ用語のいずれかが使用されると、例外が発生します。
Query is not understandable
execute()または explain()の呼び出し中にスローされます。

相互参照

isDesignDocumentsOnly メソッド (DominoQuery - Java)

setDesignDocumentsOnly メソッド (DominoQuery - Java)

 

 

MaxScanDocs プロパティ

すべてのクエリの処理でスキャンされる文書の最大許容数を指定します。この数を超えると、DQL 実行時にエラーが返されます。デフォルトは500,000です。

データ型

Long

構文

取得する:
Dim maxdocs as Long
maxdocs = dquery.Maxscandocs
設定する:
dquery.Maxscandocs = 1000000

相互参照

getMaxScanDocs メソッド (DominoQuery - Java)

setMaxScanDocs メソッド (DominoQuery - Java)

 

 

MaxScanEntries プロパティ

すべてのクエリの処理でスキャンされるビューエントリの最大許容数を指定します。この数を超えると、DQL 実行時にエラーが返されます。デフォルトは200,000です。

データ型

Long

構文

取得する:
Dim maxentries as Long
maxentries = dquery.Maxscanentries 
設定する:
dquery.Maxscanentries = 1000000 

相互参照

getMaxScanEntries メソッド (DominoQuery - Java)

setMaxScanEntries メソッド (DominoQuery - Java)

 

 

NoViews プロパティ

クエリを処理する際にビュー検索の処理を実行しないことを指定します。デフォルトはFalse(オフ)です。

データ型

Boolean

構文

取得する:
Dim nviews as Boolean
nviews = dquery.Noviews
設定する:
dquery.Noviews = True 

使用法

次のようなビュー固有の構文が失敗し、構文が使用されている場合はクエリで結果が生成されません。
'Viewname'.column <operator> <value>
In ('viewname1', 'viewname2')

ビューと NSF スキャンの使用における他の構文用語の調整に役立ちます。

相互参照

isNoViews メソッド (DominoQuery - Java)

setNoViews メソッド (DominoQuery - Java)

 

 

RebuildDesignCatalog プロパティ

Explain または Execute を使用してクエリを処理する前に、DQL 処理でデザイン カタログを完全に再構築するように指定します。

データ型

Boolean

デフォルトは False です。

構文

取得する:
Dim rebuildDsgnCat as Boolean
rebuildDsgnCat = dquery.RebuildDesignCatalog
 
設定する:
dquery.RebuildDesignCatalog = True

使用法

このプロパティを使用すると、クエリを実行する前にデザインカタログの完全な再構築が行われるため、コストがかかります。

デザインカタログへの設計者権限がない場合、 RebuildDesignCatalog 実行中に「その操作を実行する権限がありません」というメッセージが表示され、設定が失敗し、クエリ結果は表示されません。

 

 

RefreshDesignCatalog プロパティ

Explain または Execute を使用してクエリを処理する前に、DQL 処理でデザインカタログを更新するように指定します。

データ型

Boolean

デフォルトは False です。

構文

取得する:
Dim refDsgnCat as Boolean
refDsgnCat = dquery.RefreshDesignCatalog

設定する:

dquery.RefreshDesignCatalog = True

使用法

このプロパティを使用すると、リソースの使用や時間がかかるものの、RebuildDesignCatalog よりはコストが低く、現在のデータベース設計の状態が現在のデータベースのデザインカタログ文書に正確に反映されます。

デザインカタログへの設計者権限がない場合、 RefreshDesignCatalog実行中に「その操作を実行する権限がありません」というメッセージが表示され、設定が失敗し、クエリ結果は表示されません。

 

 

RefreshFullText プロパティ

Explain または Execute を使用してクエリを処理する前に、データベースの全文索引を更新するように DQL に指定します。

データ型

Boolean

デフォルトは False です。

構文

取得する:
Dim refFT as Boolean
refFT = dquery.RefreshFullText
設定する:
dquery.RefreshFullText = True
 Dim refFT as Boolean refFT = dquery.RefreshFullText
To set: dquery.RefreshFullText = True

使用法

このプロパティを使用すると、リソースの使用や時間がかかりますが、クエリ処理の前に最新の更新が全文索引に反映されることが保証されます。

 

 

RefreshViews プロパティ

DQL のクエリでビューに対する処理を実行する場合に、開いているすべてのビューを更新するように指定します。

データ型

Boolean

デフォルトは False です。

構文

取得する:
Dim refviews as Boolean
refviews = dquery.Refreshviews
設定する:
dquery.Refreshviews = True 

使用法

このプロパティを使用すると競合が発生する可能性がありますが、処理時にすべてのインデックスが最新であることが保証されます。

サーバー全体で有効にするには、サーバーに次の notes.ini 設定を追加します: QUERY_REFRESH_ALL_VIEWS=1

相互参照

isRefreshViews メソッド (DominoQuery - Java)

setRefreshViews メソッド (DominoQuery - Java)

 

 

TimeoutSec プロパティ

DQL クエリの実行に許容される最大秒数を指定します。この秒数を超えるとDQL実行時にエラーが返されます。

データ型

Integer

デフォルトは300(5分)です。

構文

取得する:
Dim secs as Integer
secs = dquery.Timeoutsec
設定する:
dquery.Timeoutsec = 1000

相互参照

getTimeoutSecs メソッド (DominoQuery - Java)

setTimeoutSecs メソッド (DominoQuery - Java)

 

CreateIndex メソッド

DQL クエリ用に最適化された Domino ビューの索引を作成します。

構文

NotesDominoQuery CreateIndex(String IndexName, Variant Field, Optional Boolean Isvisible, Optional Boolean Nobuild)

パラメータ

IndexName
String。作成するインデックスの名前。既存のビューの名前と競合しない名前を使用してください。
注: 各インデックスの名前は、この呼び出しで作成されたビューとして識別しやすく、データベース内で一意である必要があります。非表示のインデックスを作成した場合(IsVisible がデフォルトまたは false の場合)、指定されたビュー名と括弧で囲まれた名前(つまり、「viewname」と「(viewname)」の両方)はデータベースで予約され、その名前で別のビューまたはインデックスを作成することはできません。
Field

Variant 文字列または文字列配列。インデックスを作成するフィールドの名前。

Isvisible

Boolean。ビューを表示します。指定しない場合は、括弧を使用して非表示のビューが作成されます。例えば、「myindex」は「(myindex)」になります。true に設定すると、すべてのユーザーがデータベースを開いたときに、呼び出しによって作成されたビューが表示されます。

Nobuild

Boolean。ビューを構築せず、通常のビュー処理で構築できるようにします。CreateIndex によって作成されるすべてのビューは、更新オプションが「自動」に設定された状態で作成されます。指定されていない場合、作成されるビューは CreateIndex 操作の一部として構築されます。

戻り値

なし

Dim IndexName As String
    Dim FieldName As Variant

    Dim Session As New NotesSession
    Dim db As NotesDatabase
    Dim TheQuery As NotesDominoQuery
    Set db = Session.CurrentDatabase
    Set TheQuery = db.Createdominoquery()
    IndexName = "idx1"
    FieldName = "order_status"
    ' Create the index, default the options
    Call TheQuery.CreateIndex(IndexName, FieldName)

相互参照

createIndex メソッド (DominoQuery - Java)

 

 

Execute メソッド

指定されたパラメータに従って渡されたクエリ文字列を実行し、名前付き結果をデータベースに返します。これにより、結果への再アクセスがより高速になります。複雑なクエリを再利用する場合、これにより処理時間が大幅に短縮されます。

構文

Set doccol = NotesDominoQuery.Execute(Query$, Optional String ResultName, Optional Boolean Replace, Optional Long ExpireHours)

パラメータ

Query$

String 型。DQL 構文のクエリ。

ResultName

String 型。将来のDQL参照のために、DocumentCollection をデータベースに保存する際に使用する名前。名前は大文字と小文字を区別しません。

Replace

Boolean 型。ResultNameを持つ保存済みの DocumentCollection が存在する場合は上書きします。設定されていない場合は、競合を示すエラーがスローされます。

ExpireHours

Long 型。将来の DQL 参照用に保存された DocumentCollection を保持する時間(時間単位)。省略した場合のデフォルトは 24 時間です。
注: Domino の updall コマンドを -j オプション付きで使用すると、名前付き結果の管理オプションが提供されます。詳細については、Domino のドキュメントを参照してください。
注意:将来の更新機能に備えて、クエリに置換変数 (例: &value) が含まれている場合は、結果を保存できません。

戻り値

NotesDocumentCollection

Dim Query As String
Dim db As NotesDatabase 
Dim TheQuery As NotesDominoQuery
Dim doccol As NotesDocumentCollection
Dim ResultName As String
Dim ExpireHours As Long
Dim Session As New NotesSession
Set db = Session.getdatabase("", "my.nsf")
Set TheQuery = db.Createdominoquery()
Query$ = "firstname = 'Annabelle' and lastname = 'Stevens' and 'Personview'.dept = 'Sales'"
ResultName = "MySavedResults"
ExpireHours = 72
' Runs the query, returns results in doccol and saves them for future reference (DQL in clause) 
' in "MySavedResults", a named set of documents that will be deleted by updall in 72 hours
Set doccol = TheQuery.Execute(Query$, ResultName, ExpireHours)

言語相互参照

Execute メソッド (DominoQuery - Java)

 

 

Explain メソッド

設定されたパラメータに従って渡されたクエリ文字列を実行し、クエリがどのように実行されたかを示す説明の文字列を返します。

構文

Set explainstring = NotesDominoQuery.Explain(Query$)

パラメータ

Query$

文字列。DQL 構文のクエリ。

戻り値

String

explain 出力を理解して操作するには、「 explain 」を参照してください。

Dim Query$ as String
Dim ExplainString as String
Dim NotesDatabase db
Dim TheQuery As NotesDominoQuery
Set db = Session.Getdatabase("my.nsf")
Set TheQuery = db.Createdominoquery()
Set Query$ = "firstname = 'Annabelle' and lastname = 'Stevens' and 'Personview'.dept = 'Sales'"
Set ExplainString = TheQuery.Explain(Query$)

相互参照

explain メソッド (DominoQuery - Java)

 

 

ListIndexes メソッド

Domino DQL クエリ用語に最適化されたインデックスを一覧表示します。

構文

NotesDominoQuery.ListIndexes()

パラメータ

なし

戻り値

NotesJsonNavigatorObject

結果は、次の構造を持つ JSON 形式で返されます。
"DBName":"dev\\ordwrk2.nsf",
   "Indexes":[ 
      { 
         "Indexname":"All",
         "Columnname":"Sales_person",
         "Columnref":true,
         "Fieldref":true
      },
...
ここでColumnref は DQL'viewname'.columnname 構文をフィールドで使用できるかどうか、 Fieldref は、フィールド名を DQL 用語で直接使用できるかどうかです。

Dim Session As New NotesSession
    Dim db As NotesDatabase
    Dim IndexList As String
    Dim TheQuery As NotesDominoQuery
    Dim jsnav As NotesJSONNavigator
    Dim el As NotesJSONElement
    Set db = Session.CurrentDatabase
    Set TheQuery = db.Createdominoquery()
    Set jsnav = TheQuery.ListIndexes()

    IndexList = jsnav.Stringify()
    
    Print IndexList

相互参照

listIndexes メソッド (DominoQuery - Java)

 

 

Parse メソッド

DQL クエリ文字列を解析して正しい構文を検証します。

構文

Set parsestring = NotesDominoQuery.Parse(Query$)

パラメータ

Query$

文字列。DQL 構文のクエリ。

戻り値

String

不正なクエリによって生成されるエラーメッセージによって問題を解決できます。

Dim Query$ as String
Dim ParseString as String
Dim NotesDatabase db
Dim TheQuery As NotesDominoQuery
Set db = Session.Getdatabase("my.nsf")
Set TheQuery = db.Createdominoquery()
Set Query$ = "firstname != 'Annabelle' and lastname = 'Stevens and 'Personview'.dept = 'Sales'"
Set ParseString = TheQuery.Explain(Query$)

この場合、!=演算子はエラーであり、'Stevens の先頭の単一引用符は閉じられていません。

DQL 構文の詳細については、「Domino クエリ言語」セクションを参照してください。

相互参照

Parse メソッド (DominoQuery - Java)

 

 

RemoveIndex メソッド

DQLクエリ用語に最適化されたビュー索引を削除します。RemoveIndex は実稼働ビューも削除できます。削除するビュー索引の選択には注意してください。

構文

NotesDominoQuery RemoveIndex(String IndexName)

パラメータ

IndexName

削除するインデックスの名前。

インデックス名で括弧を省略し、同じ名前の表示可能なビューがない場合、非表示のビューを削除します。例えば、「myview」と「(myview)」が存在する場合、「myview」は「myview」のみを削除します。しかし、「(myview)」のみが存在する場合、「myview」は「(myview)」を削除します。インデックス・ビューには、データベース内の他のビューとは異なる名前を付けることをお勧めします。

戻り値

なし

 Dim IndexName As String
    Dim FieldName As Variant
    
    Dim Session As New NotesSession
    Dim TheQuery As NotesDominoQuery
    Dim db As NotesDatabase

    Set db = Session.CurrentDatabase
    IndexName = "idx1"
    ' Remove the index
    Call TheQuery.RemoveIndex(IndexName)

相互参照

RemoveIndex メソッド (DominoQuery - Java)

 

RemoveNamedResult メソッド

NotesDominoQuery Execute メソッドによって作成された名前付き結果を削除します。

注:このメソッドは V12.0.1 で新しく追加されました。

構文

NotesDominoQuery.RemoveNamedResult(ResultName$)

パラメータ

ResultName$

文字列。NotesDominoQuery の Execute メソッドによって作成された名前付き結果セット。

戻り値

なし

 

 

ResetNamedVariables メソッド

DominoQuery インスタンスから、以前に設定されたすべての名前付き変数と値を削除します。

構文

NotesDominoQuery.Resetnamedvariables()​

パラメータ

なし

戻り値

なし

使用法

DominoQuery インスタンスから、以前に設定されたすべての名前付き変数と値を削除します。SetNamedVariable が、指定された名前にバインドされた値が存在することを示すエラーを返した場合は、ResetNamedVariablesを呼び出して変数の状態をクリアしてください。

既存のバインドされた変数値の上書きはサポートされていません。同じ名前で変数を設定する前に、ResetNamedVariables を呼び出して変数の状態をクリアする必要があります。

Dim Query$ as String
Dim lastname$ as String
Dim NotesDatabase db
Dim TheQuery As NotesDominoQuery
Dim doccol As NotesDocumentCollection
Set db = Session.Getdatabase("my.nsf")
Set TheQuery = db.Createdominoquery()
TheQuery.Setnamedvariable("lastname", "Stevens")
Set Query$ = "firstname" != 'Annabelle' and lastname = "lastname"
Set doccol = TheQuery.Execute(Query$)
…
TheQuery.Resetnamedvariables()
TheQuery.Setnamedvariable("salary", 55000)
TheQuery.Setnamedvariable("department", "Sales")
Set Query$ = "salary >= "salary and department = "department"
Set doccol = TheQuery.Execute(Query$)

相互参照

resetNamedVariables メソッド (DominoQuery - Java)

 

 

SetNamedVariable メソッド

DQL クエリ内の名前付き置換変数に値を割り当てます。

構文

NotesDominoQuery.Setnamedvariable( variablename$value )

パラメータ

variablename$

文字列。DQLクエリで疑問符の後に指定される置換変数の名前。つまり、「date_of_birth?」は DQL 構文では「?date_of_birth」と解釈されます。

value

Variant。文字列、数値、または DateTime オブジェクトになります。

戻り値

なし

Dim Query As String
Dim lastname As String
Dim db As NotesDatabase
Dim TheQuery As NotesDominoQuery
Dim doccol As NotesDocumentCollection
Dim Session As New NotesSession
Set db = Session.Getdatabase("", "my.nsf")
Set TheQuery = db.CreateDominoQuery()
REM Note - substitution variable names are case sensitive.  
REM Maximum subsitution variable name length is 16 bytes
Call TheQuery.Setnamedvariable("lastname", "Stevens")
Query = "firstname != 'Annabelle' and lastname = ?lastname"
Set doccol = TheQuery.Execute(Query$)

置換変数の詳細については、「Domino クエリ言語」セクションを参照してください。

相互参照

setNamedVariable メソッド (DominoQuery - Java)