<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>hehongda (何宏达)</title>
    <link>https://xxb.lttc.cn/hehongda</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>利用 master..spt_values 生成起止日期内的所有日期</title>
      <description>&lt;p&gt;该表是从 sybase 继承过来的，是个内部字典表，供 SQL Server 内部使用。&lt;br&gt;
我们可以在许多系统存储过程和函数的源代码中发现它的身影。其实可以将它理解成我们编程时常用的数据字典.&lt;/p&gt;

&lt;p&gt;列名分别为名称、值、类型、下限、上限、状态；&lt;/p&gt;

&lt;p&gt;类型列的取值含义：
D=Database Option P=Projection DBR=Database Role DC=Database Replication I=Index L=Locks V=Device Type
因为比较多，无法一一列举。其中类型 P 较为特殊，它只是 0-2047(与版本有关) 之间的数字的简单列表，作为对所有类型之间关系的预测。&lt;/p&gt;

&lt;p&gt;代码：&lt;/p&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;select&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;date&lt;/span&gt;
&lt;span class="k"&gt;from&lt;/span&gt;
  &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;select&lt;/span&gt;
  &lt;span class="n"&gt;dateadd&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dd&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;number&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'2018-09-01'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nb"&gt;date&lt;/span&gt;
&lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="n"&gt;master&lt;/span&gt;&lt;span class="p"&gt;..&lt;/span&gt;&lt;span class="n"&gt;spt_values&lt;/span&gt; &lt;span class="k"&gt;where&lt;/span&gt; &lt;span class="k"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'p'&lt;/span&gt; &lt;span class="k"&gt;and&lt;/span&gt;  &lt;span class="n"&gt;dateadd&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;number&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'2018-09-01'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;=&lt;/span&gt;&lt;span class="s1"&gt;'2018-10-20'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;
&lt;span class="k"&gt;order&lt;/span&gt; &lt;span class="k"&gt;by&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;date&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;</description>
      <author>hehongda</author>
      <pubDate>Fri, 28 Sep 2018 23:15:19 +0800</pubDate>
      <link>https://xxb.lttc.cn/topics/136</link>
      <guid>https://xxb.lttc.cn/topics/136</guid>
    </item>
    <item>
      <title>SQL SERVER 中拼接字符串</title>
      <description>&lt;p&gt;在 sql server 中可以使用 “stuff” 和 “for xml path” 的方法拼接字符串&lt;br&gt;
原始数据:&lt;img src="/uploads/photo/attachment/1709/thread/7_48_26278a23aada687.png!large" title="" alt="效果2"&gt;  拼接语句：&lt;img src="/uploads/photo/attachment/1709/thread/7_48_07403ad8d4cd3fa.png!large" title="" alt="效果"&gt;&lt;/p&gt;
&lt;h3 id="使用语句："&gt;使用语句：&lt;/h3&gt;
&lt;p&gt;  原始数据：&lt;br&gt;
&lt;code&gt;select name from test&lt;/code&gt;&lt;br&gt;
  拼接语句：&lt;br&gt;
&lt;code&gt;select stuff((select ','+name from test for xml path('')),1,1,'') as name&lt;/code&gt;&lt;/p&gt;
&lt;h3 id="方法："&gt;方法：&lt;/h3&gt;
&lt;p&gt;1、使用 for xml path 将字符串转换为 XML 格式并拼接&lt;br&gt;
&lt;code&gt;select ','+name from test for xml path('')&lt;/code&gt;&lt;br&gt;
&lt;img src="/uploads/photo/attachment/1709/thread/7_48_d072947379b7c49.png!large" title="" alt="效果3"&gt;&lt;br&gt;
2、使用 stuff 去除多于的 “，”&lt;br&gt;
&lt;code&gt;STUFF ( character_expression , start ,length ,character_expression )&lt;/code&gt;&lt;br&gt;
参数&lt;br&gt;
character_expression&lt;br&gt;
一个字符数据表达式。character_expression 可以是常量、变量，也可以是字符列或二进制数据列。&lt;br&gt;
start&lt;br&gt;
一个整数值，指定删除和插入的开始位置。如果 start 或 length 为负，则返回空字符串。如果 start 比第一个 character_expression 长，则返回空字符串。start 可以是 bigint 类型。&lt;br&gt;
length&lt;br&gt;
一个整数，指定要删除的字符数。如果 length 比第一个 character_expression 长，则最多删除到最后一个 character_expression 中的最后一个字符。length 可以是 bigint 类型。&lt;br&gt;
返回类型&lt;br&gt;
如果 character_expression 是受支持的字符数据类型，则返回字符数据。如果 character_expression 是一个受支持的 binary 数据类型，则返回二进制数据。&lt;br&gt;
3、具体使用方法可查询百度。&lt;/p&gt;</description>
      <author>hehongda</author>
      <pubDate>Thu, 28 Sep 2017 00:50:41 +0800</pubDate>
      <link>https://xxb.lttc.cn/topics/108</link>
      <guid>https://xxb.lttc.cn/topics/108</guid>
    </item>
    <item>
      <title>风险管理 - 付款管理 - 审核付款申请问题处理</title>
      <description>&lt;p&gt;&lt;strong&gt;问题描述&lt;/strong&gt;：2017年8月21日，物资供应部问题，“审核付款申请”，模块在财务部审核完成，物资供应部再审核时出现问题，程序提示如下：&lt;br&gt;
&lt;img src="/uploads/photo/attachment/1708/thread/14_48_6a7ea5e35bd0647.png!large" title="" alt="20170821合同问题"&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;问题原因：&lt;/strong&gt;由于 ERP 的对应数据没有推送到中间表，中间表没有相应数据，全面预算系统也无法从中间表相应数据。&lt;br&gt;
&lt;strong&gt;解决方案：&lt;/strong&gt;①首先可尝试在全面预算系统中手动进行一次数据导入，如下截图&lt;br&gt;
&lt;img src="/uploads/photo/attachment/1708/thread/14_48_567b89e6035a750.png!large" title="" alt="全面预算系统外部数据导入"&gt;&lt;br&gt;
②若步骤①执行后仍出现问题，则需要找数据同步负责人查看中间表问题。 
此次解决方法：将 ERP 中的对应数据的 modifytime 修改为当前时间，则会触发数据同步，将此条数据同步到中间表。&lt;br&gt;
&lt;strong&gt;数据同步基本流程：&lt;/strong&gt;鲁泰 ERP 的相关数据首先会通过数据同步推送到中间表中，中间表中的数据在全面预算系统的外部数据导入执行时同步到全面预算的数据库。&lt;/p&gt;</description>
      <author>hehongda</author>
      <pubDate>Mon, 21 Aug 2017 19:57:22 +0800</pubDate>
      <link>https://xxb.lttc.cn/topics/98</link>
      <guid>https://xxb.lttc.cn/topics/98</guid>
    </item>
    <item>
      <title>ERP600 在模块主窗体系统消息处显示图片的方法</title>
      <description>&lt;h4 id="背景："&gt;背景：&lt;/h4&gt;
&lt;p&gt;近期研发科编写了基于 vue、vux 框架的物流管理系统移动版，为方便业务人员下载，决定将其网址二维码放到 ERP600-库存管理 - 物流运输管理系统主窗体系统消息处。&lt;/p&gt;
&lt;h4 id="效果图："&gt;效果图：&lt;/h4&gt;
&lt;p&gt;&lt;img src="/uploads/photo/attachment/1708/thread/5_48_8aa2ff1e0ce0bc1.png!large" title="" alt="效果图"&gt;&lt;/p&gt;
&lt;h4 id="方法："&gt;方法：&lt;/h4&gt;
&lt;p&gt;1、通过搜索 PB 源码，找到之前增加提示信息的位置，f_objproc，如下图。
&lt;img src="/uploads/photo/attachment/1708/thread/5_48_b1aeb0c957ca3a7.png!large" title="" alt="f_objproc"&gt;&lt;br&gt;
2、通过参考《PowerBuilder 生成二维码 + 显示在 DataWindow》中的方法，则需要将显示图片的指定列的属性中勾选 Display As Picture，但是由于用于显示系统消息的窗口和 DataWindow 为已封装好的，不可修改，则采用代码将其属性修改为 “Display As Picture”。&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;w_desktop.dw_message.setitem(l2,'recordid',1)
w_desktop.dw_message.setitem(l2,'sendtime',today())
w_desktop.dw_message.setitem(l2,'messagetype','消息')
w_desktop.dw_message.setitem(l2,'takeaction','版本信息')
w_desktop.dw_message.Modify("DataWindow.detail.height=700")
w_desktop.dw_message.Modify("content.width=700")
w_desktop.dw_message.Modify("content.height=700")
w_desktop.dw_message.Modify("content.bitmapname=yes")
w_desktop.dw_message.setitem(l2,'content','app.bmp')
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;使用 modify 依次修改了行高，单元格的宽度，单元格的高度，允许显示图片，图片地址。&lt;br&gt;
3、重新生成 f_objproc&lt;br&gt;
4、完成&lt;/p&gt;
&lt;h4 id="遇到的问题："&gt;遇到的问题：&lt;/h4&gt;
&lt;p&gt;1、由于窗体被封装，如何设置 DataWindow 的属性遇到了一定的问题，并且通过属性更改，图片和文字不能同时显示。&lt;br&gt;
2、由于对 PB 程序的不熟悉，在修改完成后未做重新生成，导致测试一直不通过。&lt;br&gt;
3、PB 可显示的图片类型受限，为 bmp 格式。&lt;/p&gt;</description>
      <author>hehongda</author>
      <pubDate>Wed, 09 Aug 2017 00:12:01 +0800</pubDate>
      <link>https://xxb.lttc.cn/topics/87</link>
      <guid>https://xxb.lttc.cn/topics/87</guid>
    </item>
    <item>
      <title>Vue.js 简介及基本使用方法</title>
      <description>&lt;h3 id="介绍"&gt;介绍&lt;/h3&gt;
&lt;p&gt;Vue.js 是目前选用的、用于开发基于 HTML5 的移动应用程序的一套构建用户界面的渐进式框架。与其他重量级框架不同的是，Vue 采用自底向上增量开发的设计。Vue 的核心库只关注视图层，它不仅易于上手，还便于与第三方库或既有项目整合。另一方面，当与单文件组件和 Vue 生态系统支持的库结合使用时，Vue 也完全能够为复杂的单页应用程序提供驱动。&lt;/p&gt;
&lt;h3 id="兼容性"&gt;兼容性&lt;/h3&gt;
&lt;p&gt;Vue.js 不支持 IE8 及其以下版本&lt;/p&gt;
&lt;h3 id="基本使用方法"&gt;基本使用方法&lt;/h3&gt;
&lt;p&gt;Vue.js 有两种基本的使用方法：&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;一、直接 &amp;lt;script&amp;gt;引入 
直接下载并用 &amp;lt;script&amp;gt;标签引入，Vue会被注册为一个全局变量。这种方式因与其他插件的兼容性不佳，不使用此种方法。

`二、NPM及命令行工具（CLI）

         1. 在安装完node.js后，在CMD中执行执行以下命令可以安装最新稳定版Vue：
               $ npm install vue
         2. Vue.js 提供一个官方命令行工具，可用于快速搭建大型单页应用。该工具提供开箱即用的构建工具配置，带来现代化的前端开发流程。只需几分钟即可创建并启动一个带热重载、保存时静态检查以及可用于生产环境的构建配置的项目：
              # 全局安装 vue-cli
              $ npm install --global vue-cli
              # 创建一个基于 webpack 模板的新项目
              $ vue init webpack my-project
              # 安装依赖，走你
              $ cd my-project
              $ npm install
              $ npm run dev
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="目录结构"&gt;目录结构&lt;/h3&gt;
&lt;p&gt;&lt;img src="/uploads/photo/attachment/1708/thread/9_48_9cf7a0a0855c304.png!large" title="" alt="vue项目结构2"&gt;&lt;br&gt;
&lt;strong&gt;build：&lt;/strong&gt;最终发布的代码存放位置。&lt;br&gt;
&lt;strong&gt;config：&lt;/strong&gt;配置目录，包括端口号等。我们初学可以使用默认的。&lt;br&gt;
&lt;strong&gt;node_modules：&lt;/strong&gt;npm 加载的项目依赖模块  &lt;/p&gt;
&lt;h4 id="src："&gt;src：&lt;/h4&gt;
&lt;p&gt;这里是我们要开发的目录，基本上要做的事情都在这个目录里。里面包含了几个目录及文件：&lt;br&gt;
&lt;strong&gt;assets:&lt;/strong&gt; 放置一些图片，如 logo 等。&lt;br&gt;
&lt;strong&gt;components:&lt;/strong&gt; 目录里面放了一个组件文件，可以不用。&lt;br&gt;
&lt;strong&gt;App.vue:&lt;/strong&gt; 项目入口文件，我们也可以直接将组件写这里，而不使用 components 目录。&lt;br&gt;
&lt;strong&gt;main.js:&lt;/strong&gt; 项目的核心文件。&lt;br&gt;
&lt;strong&gt;static：&lt;/strong&gt;静态资源目录，如图片、字体等。&lt;br&gt;
&lt;strong&gt;test：&lt;/strong&gt;初始测试目录，可删除&lt;br&gt;
&lt;strong&gt;.xxxx 文件：&lt;/strong&gt;这些是一些配置文件，包括语法配置，git 配置等。&lt;br&gt;
&lt;strong&gt;index.htm：&lt;/strong&gt;首页入口文件，你可以添加一些 meta 信息或同统计代码啥的。&lt;br&gt;
&lt;strong&gt;package.json：&lt;/strong&gt;项目配置文件。&lt;br&gt;
&lt;strong&gt;README.md：&lt;/strong&gt;项目的说明文档，markdown 格式&lt;br&gt;
部分内容来自 Vue.js 官网&lt;/p&gt;</description>
      <author>hehongda</author>
      <pubDate>Sat, 05 Aug 2017 22:56:42 +0800</pubDate>
      <link>https://xxb.lttc.cn/topics/84</link>
      <guid>https://xxb.lttc.cn/topics/84</guid>
    </item>
  </channel>
</rss>
