标签: infoview

在Oracle SQL中将用户提示作为日期(甚至是字符串)传递

我正在使用Business Objects,它运行在Oracle SQL数据库之上.我没有访问PL或任何类型的SQL命令行,我没有对数据库的写访问权限.我只能将查询作为单个命令运行,需要输出一组已定义的列.

我可以从用户提示中获取数据,这些提示出现在SQL中:

@variable('Prompt1')
Run Code Online (Sandbox Code Playgroud)

例如我可以说:

SELECT
    A.SomeDate
FROM
    A
WHERE
    A.SomeDate BETWEEN @variable('Start') AND @variable('End Date')
Run Code Online (Sandbox Code Playgroud)

这很容易.它运行; 请求用户输入一些日期; 然后返回它们之间的所有匹配(包括).

但问题是,用户将使用Business Objects的"Infoview"系统来运行查询,并且提示系统会显示日期选择器 - 默认情况下包括日期的时间部分("01/01/2016 12 :00:00 AM").

如果用户没有删除时间部分,如果SomeDate值超出所选时间,则可能导致错过记录.例如,如果我想获取今天的所有记录,那么我在技术上想要在00:00:00(午夜)和23:59:59之间的所有内容.

我真正希望能够在查询变量周围使用TRUNC,如下所示:

WHERE
    A.SomeDate BETWEEN TRUNC(@variable('Start')) AND TRUNC(@variable('End Date'))
Run Code Online (Sandbox Code Playgroud)

...但是这会导致编译错误:"数据类型不一致:预期DATE得到NUMBER".我不知道为什么Oracle会在编译之前将提示视为数字数据类型.

有谁知道如何获取@variable值并将其转换为我能够截断为日期值的东西?

因此,我正试图找到解决这个问题的方法.我想到的一件事是,如果我可以使用提示变量并使用TO_DATE将其显式转换为日期

编辑:有人向我指出,TRUNC将无效,因为"12:00:00 AM"已经是午夜.所以我觉得我误解了TRUNC.似乎它将它截断到午夜:而我认为它只是完全删除了日期的时间部分,这意味着匹配将在00:00:00和23:59:59之间的任何时间返回.

我真正想要的是:如果SomeDate有一个时间部分,例如,11:03那么当结束日期提示只指定当天时,我如何确保包括它?

sql oracle truncate business-objects infoview

6
推荐指数
1
解决办法
2051
查看次数

在谷歌地图v2中创建CustomInfoWindow

我在创建自己的CustomInfoWindow时遇到问题.在不知道何处和原因的情况下获得异

这是我简单的customInfoWindow类

public class CustomInfoWindow implements InfoWindowAdapter {

private LayoutInflater mInflater;

public CustomInfoWindow(LayoutInflater inflater) {
    this.mInflater=inflater;

}


@Override
public View getInfoContents(Marker marker) {
    View popup = mInflater.inflate(R.layout.info_window_layout, null);
    TextView tv=(TextView)popup.findViewById(R.id.title);
    tv.setText(marker.getTitle());
    tv=(TextView)popup.findViewById(R.id.address);
    tv.setText(marker.getSnippet());

    return popup;
}

@Override
public View getInfoWindow(Marker marker) {
    View popup = mInflater.inflate(R.layout.info_window_layout, null);
    TextView tv=(TextView)popup.findViewById(R.id.title);
    tv.setText(marker.getTitle());
    tv=(TextView)popup.findViewById(R.id.address);
    tv.setText(marker.getSnippet());

    return popup;
}
Run Code Online (Sandbox Code Playgroud)

}

我在这里设置它.(主要活动)

mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map))
            .getMap();
    mMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
    mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(
            Statics.LAT_TLV, Statics.LON_TLV), 13));

    CustomInfoWindow customInfoWindow = new CustomInfoWindow(getLayoutInflater());
    mMap.setInfoWindowAdapter(customInfoWindow);
Run Code Online (Sandbox Code Playgroud)

我没有实现onMarkerClick方法.地图加载标记(约40),但当我点击其中一个标记时,我得到:

    01-10 13:15:24.321: E/AndroidRuntime(21162): FATAL EXCEPTION: …
Run Code Online (Sandbox Code Playgroud)

android infoview google-maps-android-api-2

5
推荐指数
1
解决办法
1万
查看次数

使用WebI限制BO中返回的结果或行数

除了使用自定义SQL之外,如何限制WebI中查询返回的结果/行数?可能就像"前100名"记录.

我无法更改参数中的"限制结果大小",因为我不希望它影响任何其他报告.

先感谢您 :)

sap business-objects infoview

1
推荐指数
1
解决办法
1万
查看次数