0

仲間のコーダー、

ADODB コマンドを使用して、いくつかのフィールドで構成されるデータベースから情報を取得しています。ただし、コードを実行すると、1 つのフィールドしか抽出されず、常に同じフィールドになります。私が知る限り、MoveNext を適切に使用しており、EOF while ループ内にネストされています。

ここに私がこれまでに持っているものがあります:

if (!rsStbDetails.EOF)
{
    while (!rsStbDetails.EOF)
    {
        foreach (ADODB.Field f in rsStbDetails.Fields)
        {
           if (f.Value == null)
           {
               f.Value = 0;
           }

           switch (f.Name)
           {
               // There's a load of case statements here to manipulate the values being read in        
               default:
                   SetValue(id, f.Name, f.Value, f.Position);
                   break;
           }
        }
    }
    rsStbDetails.MoveNext();
}

何か案は?乾杯

編集:接続をセットアップするために使用しているコードは次のとおりです。

objComm.ActiveConnection = conSQL;
objComm.CommandType = CommandTypeEnum.adCmdStoredProc;
objComm.CommandText = "Service.GetDetails";

objComm.Parameters.Append(objComm.CreateParameter("@Node", ADODB.DataTypeEnum.adVarChar, ParameterDirectionEnum.adParamInput, 50, "NAME"));
objComm.Parameters.Append(objComm.CreateParameter("@Box", ADODB.DataTypeEnum.adVarChar, ParameterDirectionEnum.adParamInput, 20, ""));
objComm.Parameters.Append(objComm.CreateParameter("@Num", ADODB.DataTypeEnum.adInteger, ParameterDirectionEnum.adParamInput, 20, 0));
objComm.Parameters.Append(objComm.CreateParameter("@Exclude", ADODB.DataTypeEnum.adInteger, ParameterDirectionEnum.adParamInput, 20, iExclude));

objComm.Parameters[1].Value = Right((string)GetProperty(id, "SName", role), 8);
4

3 に答える 3

2

少なくともrsStbDetails.MoveNext();ブレースを 1 つ上に移動する必要があります :)

于 2012-08-07T07:45:09.847 に答える
1

while ループ内に次の行を追加しrsStbDetails.MoveNext();ます。ADONet.net

このリンクは、テクノロジーを学ぶのに非常に適した場所ADO NETです。

于 2012-08-07T07:47:45.673 に答える
0

問題はサーバー側であり、私のコードとは何の関係もないことが判明しました。MoveNext() の配置が正しくないことを指摘したジェラルドの回答を受け入れました。とにかくありがとう、チャップス。

于 2012-08-07T09:28:54.713 に答える