【peoplesoft】SQLExec 往long类型字段插入时报错 Bind value is too long

 

通过SQLExec插入或更新long类型的字段,当值超过254个字符时,会出现 Bind value is too long错误。

解决方案:

使用%TextIn(BindVariable) 函数,即可对longChar类型字段进行更新和插入。

 

举例:

&String1 = "This is a test." ;

SqlExec("INSERT INTO PS_TABLE1 (STMTID, SQLSTMT) VALUES (1, %TextIn(:1))", &String1);

 

加上%TextIn之后,即使绑定变量的值超过了254个字符,也可以正常插入或更新。

<think>我们正在讨论的是在PeopleSoft组件的搜索初始化事件(SearchInit)中设置默认搜索类型。根据之前的回答,我们知道可以通过设置%Component.SearchType属性来实现,其值可以是%SearchType_Basic(基本搜索)或%SearchType_Advanced(高级搜索)。 用户本次的问题非常明确:如何在PeopleCode中设置组件搜索字段的默认搜索类型。注意,这里用户提到了“搜索字段”,但根据上下文,我们实际上是在设置整个组件的搜索类型(即打开组件显示的是基本搜索界面还是高级搜索界面),而不是单个字段的默认值。 因此,我们需要在组件的SearchInit事件中编写PeopleCode。 步骤: 1. 在Application Designer中打开目标组件。 2. 在组件事件中,选择SearchInit事件(如果没有,可以添加)。 3. 在SearchInit事件中编写代码设置SearchType属性。 示例代码: ```peoplecode /* 设置默认搜索类型为高级搜索 */ If %Component <> Null Then %Component.SearchType = %SearchType_Advanced; End-If; ``` 注意:%Component对象在组件级事件中可用,它代表了当前组件。在SearchInit事件中,我们可以安全地使用它。 另外,如果希望每次进入组件都强制使用设置的搜索类型,忽略用户之前保存的偏好,可以添加: ```peoplecode %Component.ClearSearchPrefs = True; ``` 这样,每次进入组件,都会清除用户之前保存的搜索条件,并按照代码设置的搜索类型显示。 如果希望根据条件动态设置,例如根据用户角色,可以添加条件判断。 根据引用[1]中提到的配置页面,我们注意到有一个“搜索字段名”的配置。但用户的问题并不是关于配置页面的,而是直接设置默认搜索类型。因此,我们不需要涉及配置页面的内容。 但是,如果用户的需求是动态设置(即根据配置来决定默认搜索类型),那么可能需要从配置表中读取配置,然后设置SearchType。不过,用户没有提到配置,所以我们按照直接设置的方式回答。 总结:在组件的SearchInit事件中设置%Component.SearchType属性即可。 下面,我们按照要求生成相关问题。</think>### 在PeopleCode中设置组件搜索字段默认搜索类型PeopleSoft中设置组件搜索字段的默认搜索类型,需通过组件级PeopleCode实现。以下是具体步骤和代码示例: --- ### **一、实现步骤** 1. **定位组件事件** - 在Application Designer中打开目标组件 - 右键选择 **"View PeopleCode"** - 选择事件类型为 **`SearchInit`**(搜索初始化事件) 2. **设置搜索类型属性** 使用`%Component`对象的`SearchType`属性: ```peoplecode /* 设置默认搜索类型 */ If %Component <> Null Then %Component.SearchType = %SearchType_Advanced; /* 强制高级搜索 */ End-If; ``` - `%SearchType_Basic`:基本搜索(简单查询字段) - `%SearchType_Advanced`:高级搜索(完整查询构建器)[^1] --- ### **二、关键配置说明** 1. **强制覆盖用户偏好** 清除历史搜索设置确保默认值生效: ```peoplecode %Component.ClearSearchPrefs = True; /* 清除用户历史偏好 */ ``` 2. **动态条件设置** 根据角色或用户类型动态配置: ```peoplecode If %OperatorId = "ADMIN" Then %Component.SearchType = %SearchType_Advanced; /* 管理员显示高级搜索 */ Else %Component.SearchType = %SearchType_Basic; /* 普通用户显示基本搜索 */ End-If; ``` 3. **预填充搜索条件** 为搜索字段设置默认值: ```peoplecode %Component.AddSearchKey(EMPLOYEE_DATA.EMPLID, "10001"); /* 默认员工ID */ ``` --- ### **三、配置字段级默认值** 若需为特定搜索字段设置默认值(如引用[1]中的"搜索字段名"): ```peoplecode Local Record &rec = CreateRecord(Record.YOUR_MASTER_RECORD); &rec.YOUR_SEARCH_FIELD.Value = "DEFAULT_VALUE"; /* 字段级默认值 */ %Component.InsertSearchRecord(&rec); /* 注入搜索记录 */ ``` > 注:`YOUR_MASTER_RECORD`需替换为引用[1]中配置的"搜索主表名"。 --- ### **四、验证与调试** 1. **系统表验证** 检查`PSSEARCHDEFN`表确认默认值更新: ```sql SELECT SEARCHTYPE FROM PSSEARCHDEFN WHERE PNLNAME = 'YOUR_COMPONENT' /* 替换为组件名 */ ``` 2. **调试技巧** ```peoplecode MessageBox(0, "", 0, 0, "当前搜索类型: " | %Component.SearchType); ``` --- ### **五、注意事项** 1. 组件首次加载生效 2. 需通过`Change Assistant`迁移到生产环境 3. 若配置无效,检查组件是否包含多个搜索记录视图 4. 清除浏览器缓存测试默认设置[^1] > ⚠️ **引用说明**:配置字段名需与引用[1]中"搜索字段名"一致 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值