Foxtable(狐表)用户栏目专家坐堂 → 第二个参数为空


  共有3419人关注过本帖树形打印复制链接

主题:第二个参数为空

帅哥哟,离线,有人找我吗?
zhangjian222200
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1528 积分:10778 威望:0 精华:0 注册:2016/9/12 11:18:00
第二个参数为空  发帖心情 Post By:2021/2/7 10:02:00 [只看该作者]

Dim drs As List(of DataRow) 
drs = DataTables("订单").SQLSelect("产品 = 'PD02'","", "日期 Desc") ’假设订单表,有100万行,甚至1000万行,第二个参数为空,查找全部,会大幅度影响服务器效率么?
Dim Sum As Integer
For Each dr As DataRow In drs
    Sum = Sum + dr("数量")
Next
Output.Show(Sum)

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106132 积分:539771 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/2/7 10:37:00 [只看该作者]

看查询结果,加载的数据越多影响越大

 回到顶部
帅哥哟,离线,有人找我吗?
zhangjian222200
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1528 积分:10778 威望:0 精华:0 注册:2016/9/12 11:18:00
  发帖心情 Post By:2021/2/7 11:06:00 [只看该作者]

    var latitude1; // 纬度,浮点数,getLocation获得,数据随不同地点变化
    var longitude1 ; // 经度,浮点数,getLocation获得,数据随不同地点变化

    var latitude2; // 纬度,浮点数,服务器字段“纬度”已有数据,数据固定
    var longitude2; // 经度,浮点数,服务器字段“经度已有数据,数据固定


      wx.getLocation({
        type: 'gcj02', // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'wgs84'|'gcj02'
        success: function (res) {
        latitude1 = res.latitude; // 纬度,浮点数,范围为90 ~ -90
        longitude1 = res.longitude; // 经度,浮点数,范围为180 ~ -180。
        latitude2 = document.getElementById("latitude2").value; // 纬度,浮点数
        longitude2 = document.getElementById("longitude2").value; // 经度,浮点数

    latitude1 = latitude1 * Math.PI / 180.0;
    latitude2 = latitude2 * Math.PI / 180.0;
    var latitude5 = latitude1 - latitude2;
    var Lb5 = longitude1 * Math.PI / 180.0 - longitude2 * Math.PI / 180.0;
    var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(latitude5 / 2), 2) + Math.cos(latitude1) * Math.cos(latitude2) * Math.pow(Math.sin(Lb5 / 2), 2))); 
    s = s * 6378.137;//地球半径
    s = Math.round(s * 10000) / 10000;  //这是求s(单位是米)的方法,计算还挺准


下面是问题:
        Dim drs As List(of DataRow)
        Dim filter As String = “”  ’需要筛选s>5000,这个表达式怎么写?主要是涉及到了“纬度”、“经度”,两个列,有没有官方文档可以查?
        drs = DataTables("物品信息").SQLSelect(filter,20,"添加时间 Desc")
[此贴子已经被作者于2021/2/8 8:36:44编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106132 积分:539771 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/2/7 11:20:00 [只看该作者]

表格添加一个辅组列,把每一行计算结果s保存到辅组列,然后通过辅组列做条件查询

 回到顶部
帅哥哟,离线,有人找我吗?
zhangjian222200
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1528 积分:10778 威望:0 精华:0 注册:2016/9/12 11:18:00
  发帖心情 Post By:2021/2/7 12:01:00 [只看该作者]

不行啊,
因为,
是要计算两个经纬点之间的距离,
一个经纬度值在服务器上,
另一个经纬度是动态的

所以

无法直接计算出s,放在第三列




1.sqlselect,filter里面,用能直接计算两个列数据+外部数据吗?即filter里面,计算出数值s,行吗?若不行,该怎么办?

2.sqlselect,filter里面,表达式列,可以使用外部数据参与计算吗?
[此贴子已经被作者于2021/2/7 13:17:04编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106132 积分:539771 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/2/7 13:36:00 [只看该作者]


 回到顶部
帅哥哟,离线,有人找我吗?
zhangjian222200
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1528 积分:10778 威望:0 精华:0 注册:2016/9/12 11:18:00
  发帖心情 Post By:2021/2/7 14:10:00 [只看该作者]

楼上是sqlserver里面的函数,这里帖子里,主要是数学函数有用


下面计算s的代码,不看数学函数,2处粉色将字符列(实际都是数字),作为filter的表达式,与5000比较,我感觉,这样应该是不行
想问:有没有代替的办法


Dim drs As List(of DataRow) 
dim s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin([纬度列] / 2), 2) + Math.cos(latitude1) * Math.cos(latitude2) * Math.pow(Math.sin([经度列] / 2), 2))); 
Dim filter As String = “s>5000”
drs = DataTables("物品信息").SQLSelect(filter,20,"添加时间 Desc")

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106132 积分:539771 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/2/7 14:20:00 [只看该作者]

在sql里使用数学函数计算啊

SQL_Server_2005_数学函数(描述及实例)

Pict 函数名称参数示例说明
abs(数值表达式)select abs(-23.4)返回23.4返回指定数值表达式的绝对值(正值)
pi无参数select pi()返回3.14159265358979返回π的值
cos(浮点表达式)select  cos(pi()/3)返回0.5返回指定弧度的余弦值
sin(浮点表达式)select  sin(pi()/6)返回0.5返回指定弧度的正弦值
cot(浮点表达式)select cot(pi()/4)返回1返回指定弧度的余切值

 回到顶部
帅哥哟,离线,有人找我吗?
zhangjian222200
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1528 积分:10778 威望:0 精华:0 注册:2016/9/12 11:18:00
  发帖心情 Post By:2021/2/7 15:27:00 [只看该作者]

按6楼对数学函数进行处理,
然后,
在命令窗口测试,发现找不到行

Dim latitude1 = "1500"
Dim l

Dim drs As List(of DataRow)
drs = DataTables("会员资料").SQLSelect("设置查询_纬度 is not null and (5000 > Math.round(2 * Math.asin(Math.sqrt(Math.power(Math.sin((latitude1 - ([纬度] * Math.PI / 180.0)) / 2), 2) + Math.cos(latitude1) * Math.cos([纬度] * Math.PI / 180.0) * Math.power(Math.sin((longitude1 * Math.PI / 180.0 - [经度] * Math.PI / 180.0) / 2), 2)))*6378.137))",20,"添加时间 Desc") 
msgbox(drs.Count) ’设置为5000<**,结果还是0


图片点击可在新窗口打开查看此主题相关图片如下:000.png
图片点击可在新窗口打开查看

上面代码,好像有被ft网站,删了一部分,下面是完整代码
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:000.txt


[此贴子已经被作者于2021/2/7 15:32:46编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106132 积分:539771 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/2/7 15:30:00 [只看该作者]

请花点时间认真学习一下sql里的函数的用法,多搜素几篇文章看看。

而不是把foxtable的代码硬套到sql里使用,完全不是一回事

 回到顶部
总数 27 1 2 3 下一页