将双KEY拼成一个key进行前键与次键查询 protected override string GetPrevRecordSQL(string i_order, object[] i_keys, string[] i_strKeyNames) { //SQL StringBuilder strSql = new StringBuilder(); TableEngine tbl = DBFactory.GetTableEngine(this.m_DbConfig, TableNames[0]); strSql.AppendLine("SELECT * FROM"); strSql.AppendLine("(SELECT * FROM"); strSql.AppendLine("(SELECT"); strSql.AppendLine(項目コード変換マスタDef.TABLENAME + "." + 項目コード変換マスタDef.ITEM.コード区分 + "," + 項目コード変換マスタDef.TABLENAME + "." + 項目コード変換マスタDef.ITEM.コード); strSql.AppendLine(" FROM "); strSql.AppendLine(" ( "); strSql.AppendLine(" SELECT TO_CHAR (" + "lpad(" + 項目コード変換マスタDef.TABLENAME + "." + 項目コード変換マスタDef.ITEM.コード区分 + ",3,'0'))" + "||" + " TO_CHAR (" + "lpad(" + 項目コード変換マスタDef.TABLENAME + "." + 項目コード変換マスタDef.ITEM.コード + ",17,'0'))" + " AS KEYS,"); strSql.AppendLine(項目コード変換マスタDef.TABLENAME + "." + 項目コード変換マスタDef.ITEM.コード区分 + "," + 項目コード変換マスタDef.TABLENAME + "." + 項目コード変換マスタDef.ITEM.コード); strSql.AppendLine(" FROM " + 項目コード変換マスタDef.TABLENAME); strSql.AppendLine(" ORDER BY " + 項目コード変換マスタDef.TABLENAME + "." + 項目コード変換マスタDef.ITEM.コード区分 + "," + 項目コード変換マスタDef.TABLENAME + "." + 項目コード変換マスタDef.ITEM.コード); strSql.AppendLine(" ) " + 項目コード変換マスタDef.TABLENAME); strSql.AppendLine(" WHERE (1 = 1) "); strSql.AppendLine(" AND (" + 項目コード変換マスタDef.TABLENAME + ".KEYS " + "< " + DBService.AllAgreeSql(i_keys[0].Str().PadLeft(3, '0') + i_keys[1].Str().PadLeft(17, '0')) + ") order by KEYS DESC))"); strSql.AppendLine(" where ROWNUM = 1"); return strSql.ToString(); }