IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> shape {select ...} append ({select ...} RELATE ID TO PARAMETER 0ID TO PARAMETER 1) -> 正文阅读

[大数据]shape {select ...} append ({select ...} RELATE ID TO PARAMETER 0ID TO PARAMETER 1)

1、问题描述

最近在写vb.net的时候,碰到了一个有点棘手的问题。就是在vb里面去解决一对多的关系。

对应关系如下,一个合同会对应多个开票。?

?最简单暴力的方法就是循环查询了,但是这样子肯定不行的。如果是java的话可以写个合同BO类,然后里面有个List<开票类>,但我用的语言是vb,没有java这么好用。后来我去和其他同事请教,才知道在vb.net? ADO里面有个操作,可以操控sql语句的返回形式叫:shape append relate。

2、解决方法

wsc

Public Function ListAAA()
	dim cn,rs,sSQL
	Set cn = CreateObject("ADODB.Connection")
	Set rs = CreateObject("ADODB.Recordset")
	cn.Open CS_RS
	cn.CursorLocation = 3
	sSQL = sSQL & "SHAPE{"
	sSQL = sSQL & "select top 100 A.ID,A.ContractNumber from Intranet..tbTestSaleContract A "
	sSQL = sSQL & "}"
	sSQL = sSQL & "APPEND"
	sSQL = sSQL & "({"
	sSQL = sSQL & "select B.ID as invoiceId,B.contractId,B.InvoiceType from Intranet..tbTestInvoiceApply B where B.contractId=? "
	sSQL = sSQL & "}"
	sSQL = sSQL & "RELATE ID TO PARAMETER 0"
	sSQL = sSQL & ") as rsBillingInfo"
	rs.Open sSQL,cn
	Set ListAAA = rs

End Function

asp

<%
Response.Charset="gb2312"
Set dbTest = CreateObject("dbTest.wsc")
Set rs=dbTest.ListAAA()
do while not rs.eof
    Set rs1=rs("rsBillingInfo").value
    do while not rs1.eof
    Response.write "合同号:"&rs("ContractNumber")&","&"开票类型:"&rs1("InvoiceType")&","&"开票ID:"&rs1("invoiceId")&"<br/>"
    rs1.MoveNext
    loop
rs.MoveNext
loop
%>

或者我把wsc和asp合并一下,直接在前端asp使用ADO技术操作数据库

<%
Response.Charset="gb2312"

dim cn,sSQL,CS_RS
Set cn = CreateObject("ADODB.Connection")
CS_RS="Driver={SQL Server};Server=127.0.0.1;Uid=xxx;Pwd=xxxx;Provider=xxx;Database=xxxx;"
sSQL = sSQL & "SHAPE{"
	sSQL = sSQL & "select top 100 A.ID,A.ContractNumber from Intranet..tbTestSaleContract A "
	sSQL = sSQL & "}"
	sSQL = sSQL & "APPEND"
	sSQL = sSQL & "({"
	sSQL = sSQL & "select B.ID as invoiceId,B.contractId,B.InvoiceType from Intranet..tbTestInvoiceApply B where B.contractId=? "
	sSQL = sSQL & "}"
	sSQL = sSQL & "RELATE ID TO PARAMETER 0"
	sSQL = sSQL & ") as rsBillingInfo"
cn.Open CS_RS
Set rs=cn.Execute(sSQL)
do while not rs.eof
    Set rs1=rs("rsBillingInfo").value
    do while not rs1.eof
    Response.write "合同号:"&rs("ContractNumber")&","&"开票类型:"&rs1("InvoiceType")&","&"开票ID:"&rs1("invoiceId")&"<br/>"
    rs1.MoveNext
    loop
rs.MoveNext
loop
rs.Open sSQL,cn
%>

test页面输出

?

说明:

shape append relate的基本语法为:

shape {select ...} append ({select ...} RELATE ID TO PARAMETER 0,ID TO PARAMETER 1)?

3、总结

ADO是.NET操作数据库的一种技术,和java中常用的jdbc类似。不过现在除了一些比较老的系统还在用.NET技术,IIS搭建网站以外,基本比较少见了。.NET正在逐渐慢慢地开始被其他技术取代了。从我日常工作的感觉确实vb不如java,python,c++这类的语言方便,没有那么多的开源库支持,网上能找到的资料也很有限。

4、参考资料

ADO中的多层次数据集,类似于dataset_weixin_30808575的博客-CSDN博客

参数化命令的操作 | Microsoft Docs

ADO 教程 | 菜鸟教程 (runoob.com)

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-03-30 18:32:03  更:2022-03-30 18:34:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 6:05:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码