問題タブ [objectscript]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
intersystems-cache - Caché ObjectScript クラスのプロパティ数
辞書を使用してCachéでObjectScriptクラスを作成しようとしています(実行時にクラスを作成してコンパイルします)。すべて問題ありませんが、クラスに 857 を超えるプロパティを追加しようとすると機能しません。エラーにはなりませんが、clsDef.%Save() でクラスが保存されません。
クラス定義にいくつかの制限がありますか? プロパティの数またはクラスのサイズに問題がありますか? 生成されたクラスには約 9000 行が必要です。誰かが問題の原因を知っていますか?
アイデアをありがとう
(理由: 1000 列のテーブルの sql マッピング クラスなので、1000 個のプロパティとすべてのプロパティの sql ストレージ定義が必要です)
intersystems-cache - カスタム プロシージャは、クラス パラメーターのプロパティを収集できません。なぜ?
まず第一に、私はCachéの新人なので、コードはおそらく貧弱ですが...
Studio からソース ファイルを再構築するには、Java で Caché データベースにクエリを実行できる必要があります。
メソッドなどを問題なくダンプできますが、1つだけ避けられないことがあります... 何らかの理由で、EXTENTQUERYSPEC
クラスSamples.Person
(namespace: SAMPLES
) からパラメーターのプロパティをダンプできません。
このクラスは Studio では次のようになります。
手順のコードは次のとおりです。
そしてJavaコード:
さて、前述のクラス/パラメーターのペアでは、マークされた条件が常にトリガーされるため、例外がスローされます...行全体をコメントすると、3つのパラメーターすべてがnullであることが// HERE
わかります.OUT
defaultValue
後者にはスタジオで言及されている値があると予想していました...
それで、なぜこれが起こるのですか?私の手順は多少壊れていますか?
string - Intersystems Cache Objectscript で文字列を比較する
与えられた:
2弦strA、strB
私が欲しい:
これらを比較して <0、=0、または >0 を返すには、Intersystems Cache ObjectScript を使用します。
ここのところ:
ドキュメントで、私のニーズを満たす関数StrCompを見つけました。残念ながら、この関数は Cache ObjectScript の一部ではなく、Caché Basic の一部です。
関数をユーティリティ クラスの classMethod としてラップしました。
このアプローチは推奨されますか? 利用可能な機能はありますか?
前もって感謝します。
validation - %Save() 中に Intersystems Cache ObjectScript のプロパティ値が変更される
与えられた:
- B という名前のクラス。
- クラス B の 2 つの永続レコード、id = {"B1", "B2"}。
A という名前のクラス:
/li>objA.rB = "B3" の objA という名前のクラス A のインスタンス (B には "B3" 永続レコードがないため、これは無効な値です)
それが欲しいです:
objA を保存する場合 (objA.%Save())、rB の無効な値を空の文字列に置き換えて保存します。
ここのところ:
コールバック メソッド ( %OnBeforeSave) を使用して置換を試みましたが、以前に %ValidateObject が呼び出されたようです。
コールバック メソッドを使用して %ValidateObject の前に値の変更を行う方法はありますか?
前もって感謝します。
sql - インターシステムズ Caché SQL。withespaces と先頭の withespaces の異なる動作
与えられた:
- 「ID」列と「説明」列を持つテーブル tA
- 「説明」は文字列列です。
テーブルの内容は次のとおりです。
ID || 説明
1 || "文字列 1"
2 || "文字列 2"
3 || 「ストリング3」
次の SQL クエリを実行すると:
"SELECT ID FROM tA WHERE Description = 'String2'" 2 が返されます (予想どおり) 。
しかし:
次の SQL クエリを実行すると、
"SELECT ID FROM tA WHERE Description = 'String2 '" (末尾の withesspaces) も 2 が返されます。(正確な比較であるため、NONE を返す必要があります)
次の SQL クエリを実行すると、
"SELECT ID FROM tA WHERE Description = ' String2'" (先頭にスペースが必要)、NONE が返されます (予想どおり) 。
この行動の違いの理由を知っていますか?
前もって感謝します。
intersystems-cache - 端末コンソールから手動でメールを送信しますか?
メールメッセージを構築して送信するクラスがあります。変更を加えたいのですが、その前にいくつかテストしたいことがあります (URL がどのように表示されるかなど)。コンソールから手動でメッセージを送信しようとしていますが、エラーが発生します。クラスのSendMessage
メソッドは次のとおりです。
ターミナルから、MailMessage クラスをインスタンス化して本文データを設定できますが、送信しようとするとエラーが発生します。
ご覧のとおり、試してみるとSendMail
、NO CURRENT OBJECT
更新 クラスの上部にある次の行に気付きました:
だから私は試しUSER>set tSC1=EnsLib.EMail.OutboundAdapter.SendMail(tMailMessage)
ましたが、結果は<UNDEFINED> *EnsLib
intersystems-cache - コンソールからメソッドを呼び出す:「現在のオブジェクトがありません」
テストする必要があるメソッドがあります。コンソールからやりたいです。メソッドとクラスのメタデータを次に示します。
しかし、このコマンドを実行すると:
次のエラーが表示されます。
メソッドを呼び出す前に、プロパティ定義と同じようにアダプターをインスタンス化しようとしましたが、うまくいきませんでした。 コンソール セッションからこのメソッドを呼び出すにはどうすればよいですか?