1

私は UniObjects .NET で遊んでいます。

SELECT クエリを実行して、データを実行できるフォームにデータを取得できるようにしたいと考えています。

私が使用しているドキュメントはhttp://www.rocketsoftware.com/u2/products/universe/resources/technical-manuals/universe-v11r1/uonet-v11r1.pdfにあります。

現在、次を使用してクエリを実行しています

            // UniCommans is a new instance of the CreateUniCommand() method
            UniCommand cmd = us1.CreateUniCommand();

            string UVDatabaseName = "SLCUST";

            // Command is the query that will be sent to the server to be rum
            cmd.Command = "SELECT " + UVDatabaseName + " USING DICT " + UVDatabaseName + " WITH CUSREF PRICECODE";

しかし、それらが提供するデータ型オブジェクトの 1 つにデータを取得する方法がわかりません。

  • UniDynArray
  • ユニファイル
  • UniSelectList

            // OpenSession is used to open a new session to the database
            us1 = UniObjects.OpenSession("92.0.0.1", "username", "password", "/path/TOFILE", "uvcs");
    
            // Create new instance a UniCommand
            UniCommand cmd = us1.CreateUniCommand();
    
            string UVDatabaseName = "SLCUST";
    
            // Command is the query that will be sent to the server to be run
            cmd.Command = "SELECT " + UVDatabaseName + " USING DICT " + UVDatabaseName + " WITH CUSREF PRICECODE";
    
            // Buffer size for receiving data can be get/set using CommandBlockSize
            // 0 is unlimited, the full data set will be received
            cmd.CommandBlockSize = 0;
    
            // Execute() executes the Command on the server
            cmd.Execute();
    
            // A status response is returned as a string in Response
            string response_str = cmd.Response;
    
            Console.WriteLine(response_str);
    
            // Check for the response of the UniCommand
            // UVS_COMPLETE = The command was completed, or unsuccessful
            if (cmd.CommandStatus == UniObjectsTokens.UVS_COMPLETE)
            {
    
    
                // How do I loop through the data set from my query?
    
    
    
            }
    

次のコードを使用して、テーブル全体を実行できることがわかりました。

// Create a Uni file, required for you can use a database file
UniFile custfile = us1.CreateUniFile("SLCUST");

// Create a select list from the ID returned from cmd.Response;
UniSelectList selectList = us1.CreateUniSelectList(0);

selectList.Select(custfile);


bool lLastRecord = selectList.LastRecordRead;

while (!lLastRecord)
{
    string s = selectList.Next();
    Console.WriteLine("Record ID:" + s);
    lLastRecord = selectList.LastRecordRead;
}

コマンドを実行すると、次の応答文字列が返されます

SELECT リスト #0 に 4665 レコードが選択されました

リスト「0」にアクセスする方法ですが、試してみましたが、正しいクラスタイプにマッサージする方法です。

UniSelectList selectList = us1.CreateUniSelectList(0);
4

1 に答える 1

5

あなたは近づいています。「SELECT」コマンドは、デフォルトでキーのリストを選択リスト0に生成します。したがって、UniSelectListオブジェクトをそれに割り当てる必要があります。コマンドがエラーを生成したかどうかを確認する場合を除いて、実際にはコマンドの応答を確認する必要はありません。

 // OpenSession is used to open a new session to the database
    us1 = UniObjects.OpenSession("92.0.0.1", "username", "password", "/path/TOFILE", "uvcs");

    // Create new instance a UniCommand
    UniCommand cmd = us1.CreateUniCommand();

    string UVDatabaseName = "SLCUST";

    // Command is the query that will be sent to the server to be run
    cmd.Command = "SELECT " + UVDatabaseName + " USING DICT " + UVDatabaseName + " WITH CUSREF PRICECODE";

    UniSelectList uSelect = uSession.selectList (0);
    // Execute() executes the Command on the server
    cmd.Execute();

    while (!lLastRecord)
    {
      string s = uSelect.Next();
      Console.WriteLine("Record ID:" + s);
      lLastRecord = selectList.LastRecordRead;
    }
于 2011-11-09T03:30:24.200 に答える