private string IndKeys(APGenTable table, APGenIndex index)
		{
			string ix_keys = "";
			foreach (APGenOrder order in index.Orders)
			{
				if (ix_keys != "") ix_keys += ",";
				ix_keys += table.Columns[order.Name].ColumnName;
				if (order.According == APSqlOrderAccording.Desc)
					ix_keys += "(-)";
			}
			return ix_keys;
		}
		private void _createIndex(APDatabase db, APGenTable table, APGenIndex index)
		{
			StringBuilder sb = new StringBuilder();

			sb.AppendFormat("create index {0} on {1} (", index.Name/* IX_name(table, index)*/, table.TableName);
			foreach (APGenOrder order in index.Orders)
			{
				sb.AppendFormat("\r\n\t{0} {1},", table.Columns[order.Name].ColumnName, order.According.ToString());
			}
			sb.Length--;
			sb.Append("\r\n)");

			// create index index_name on (
			//		column_name [ASC|DESC],
			//		...
			// )

			DbCommand dbCmd = db.CreateSqlCommand(sb.ToString());
			dbCmd.ExecuteNonQuery();
		}
		private void _createUnique(APDatabase db, APGenTable table, APGenIndex index)
		{
			StringBuilder sb = new StringBuilder();

			sb.AppendFormat("alter table {0} add constraint {1} unique (", table.TableName, index.Name/* UQ_name(table, index)*/);
			foreach (APGenOrder order in index.Orders)
			{
				sb.AppendFormat("\r\n\t{0} {1},", table.Columns[order.Name].ColumnName, order.According.ToString());
			}
			sb.Length--;
			sb.Append("\r\n)");

			// alter table table_name add constraint uq_name (
			//		column_name DESC,
			//		...
			// )

			DbCommand dbCmd = db.CreateSqlCommand(sb.ToString());
			dbCmd.ExecuteNonQuery();
		}
		private void CreateDalConditionQueryOrderByIndex(CodeTypeDeclaration cns, APGenTable table, APGenIndex index, bool isView)
		{
			CodeMemberMethod method = NewMemberMethod(conditionQueryMethodName + "OrderBy" + index.Name, MemberAttributes.Public, APResource.APBusiness_ConditionQueryComment, Param(WherePhraseType, "condition"), Param(typeof(int), "maxReturnCount"));
			cns.Members.Add(method);
			CodeTypeReference listType = TypeTRef("List", table.DataType);
			method.ReturnType = listType;

			method.Statements.Add(
				Return(MethodInvoke(conditionQueryMethodName,
				ParamRef("condition"),
				PropRef(FieldRef(DBDef, table.Name), index.Name),
				ParamRef("maxReturnCount")))
				);
		}