2023-08
31

着迷中

By xrspook @ 8:09:03 归类于: 烂日记

我已经不记得自己是如何走上这条写代码的不归路的了,确切地说我已经不记得具体我是哪一天开始研究这个跨表查询的问题。我大概知道顺序是怎么样的,但是具体是哪一天开始我实在已经说不清了。现在我天天都在写,天天都在写VBA、天天都在纠结VBA里面的SQL。我已经不记得这种状态已经持续了多长时间,反正即便是吃饭睡觉,我的脑子里依然想着那个东西。每天就是起床吃早餐然后完成必须做的工作,接着以最快的速度完成打卡,然后一整天都在那里写代码,不管上班还是下班。在这种状态之下上班,那8个小时突然变得好短。因为已经沉迷其中,所以到了下班时间经常停不下来,吃饭时间因此一再拖延。如果不是去饭堂吃,而是自己吃麦片,那就更加是一杯麦片,我根本不知道自己是如何勺到口里的,反正那杯东西我可能得吃一个小时以上。当你完全着迷于做某事的时候,你根本感觉不到其它东西的存在,比如身体的各种反应,比如某些疼痛又或者是饥饿等等。因为我知道我一旦着迷就完全没办法顾及其它事情,所以当我还没迷进去的时候,我就得先把其它必须做的做完了,否则是完全不能自拔的。

之所以出现有现在这个状况,是因为自从我实现了第一个跨表查询的任务以后,我发现一直以来我的很多东西都可以用VBA+ADO+SQL把它们联系起来。那些以前我有数据,但需要这样那样粘贴的玩意现在我可以把它们统一起来通过查询的方式直接获取结果。这样的好处是成功开发以后很省事,但是坏处是这样非常定制化,所以基本没有什么动态可调整的余地,即便设定了很多条件当你想加更多的时候无能为力。还有一个让人觉得挺累的,就是如果我做的是数据透视表,汇总那些事情不是我干的,是系统干的,我管好明细就好,我要什么明细我就搞到什么程度,但如果我得在一个查询结果里面把汇总考虑进去,无论是列还是行,我都得想办法把实现。相对于数据透视表来说,我觉得这种汇总是硬汇总,是设计的人必须得想好的,而且一旦变换某些条件,又得伤筋动骨调试一番。对用户来说,对只看到最终结果的那个人来说,可能会觉得很爽,如果他做过之前那些这样那样的复杂操作,他更加会觉得这实在是太爽了,但如果某个人之前没有经历过那些,他只是直接用这个捷径,从他的角度考虑可能他想知道更多,但是现在已经固定好的方式没办法满足他的要求。所以我还是觉得如果数据是规范的,用Power Pivot的方式把连动起来更靠谱。

PP非常的稳定,尤其是相对于PQ来说,但问题是无论是PP还是PQ,那个写代码的地方都非常不友好。正常的窗口操作基本不会让你挂掉,但是写代码的时候非常有可能直接让你卡死,必须得关掉重来,但是之前写的东西就全部废掉了。现在我之所以会在那里玩VBA,因为实际上我玩的不仅仅是VBA本身,而是VBA延伸出去的SQL。本质上,我在进行类似PQ或者PP的操作,虽然公式少了很多,隐藏技能也就是我至今无法猜透的更多,但就运行效率来说,尤其是对小数据的运行效率来说,VBA+ADO+SQL远远优于PQ和PP。我这里说的小数据是单表不超过1万条,最宽的表不超过30列。

可能,如果我不是用Excel去玩PP和PQ,而是用Power BI去玩,效果会很不一样。

2023-08
30

再也没有家乐福了

By xrspook @ 8:24:24 归类于: 烂日记

广州最后一家家乐福也关门了,这就意味着广州再也没有家乐福。不仅仅是广州没有了,深圳也没有了,整个中国的南片区的大城市基本都已经再也没有家乐福。家乐福的离去让我觉得百感交集,因为我在家乐福有过一段记忆,那段记忆刚好是我觉得人生最美好的20年。

公众号上说家乐福万国店是2002年开始营业的,2022年结束,也就是说大概20年。我是那个看着他们开业又看着他们关门的人。当时一条很普通的前进路上,江南大道这边有个好又多,东晓南路那边有个华润万家,中间南田路的十字路口有个家乐福。三家大型超市,家乐福的生意最好。可以这么说,家乐福的出现直接把路头那家好又多顶死了,在没有家乐福之前,好又多非常旺场。

我实在不记得自己在家乐福买过多少法棍。一开始的价格好像是3.9元,后来越来越贵。除了法棍以外,他们还有各种各样硬的面包。在家乐福见识那个东西之前,我基本很少接触那款面包,但自从有了家乐福,自从他们出现在我的生活圈里,家乐福的面包经常会成为我家的早餐。有可能是硬的面包,也有可能是长条的吐司。11.9元的长条吐司,跟嘉顿或者利口福的比起来便宜了一大截,就更不用说如果要跟美心相比,那有多划算。一开始的家乐福到了晚上七八点的时候,自己烘焙的面包还会捆绑销售,买2送1或者买1送1,本来就不贵,结果就变得更便宜。还记得我妈在广医二院住院的时候,我就曾经在那个时候买过面包回家,但是面包回到家以后,只有我一个人吃,居然吃到发霉了都没吃完,不得不丢掉。

逢年过节的家乐福年货特别多,堆到整个过道都是,而且人山人海,结账的时候经常要排长长的队伍。我不知道别人是怎么认识万国奥特莱斯的,但对我这个外婆就住在附近,闲逛的时候一定会万国,去万国90%都是为了去家乐福。如果到上面或者下面的奥特莱斯逛一下,纯粹就只是想逛一下而已。很久很久以前,当万国的奥特莱斯还没有一层楼全部都是吃饭的地方时候,那个地方好像叫海珠书城。那是个我非常喜欢去的地方。家里的某些书还印着那里的书戳。但是书城这个东西不赚钱,为什么会在那里开一个海珠书城呢?我也搞不懂。大概是因为海珠区的其它地方没有一个卖书的大卖场吧。当时的书城很单一,除了卖书就是卖书,可能也卖一点音像制品,但不会在里面搞什么文创,也不会有咖啡吧之类的东西。现在的万国奥特莱斯,大家去那个地方完完全全是冲着奥特莱斯去的,我不知道现在去的那些年轻人里有多少个知道那里曾经有一个很大的家乐福。那里的家乐福曾经是叔叔阿姨老人小孩的闲逛圣地。每次去万国,我一定会去家乐福里转一圈,虽然可能什么都不买。

家乐福的离开或者说家乐福万国店的离开我是有点落寞的。因为在家乐福结业之前,外婆就去世了。外婆去世以后我就很少去那个地方,虽然我妈过一段时间还会到那里附近去买菜,还会顺便去一下家乐福。因为同样的商品,就价格来说家乐福万国店的要比客村沃尔玛便宜。对我来说,万国家乐福因为有外婆在,所以那永远是家的感觉,现在外婆不在了,家也没有了。

我觉得这辈子再也不会有另外一家大型超市会让我有这种情感上的羁绊。

2023-08
29

换洗衣机排水管

By xrspook @ 8:48:39 归类于: 烂日记

去年8月我发现洗衣机漏水,某一天我终于忍不住,有一天我拆开了洗衣机的后盖,发现原来是排水管开了个口子。当时我手头上没什么器材,也没想过到底要怎么医治,反正就是电工胶布在上面缠了好几圈。我只是缠电工胶布,开口子的地方没有加胶水,也没有缠生料带。这样的处理不知道能扛多长时间,反正能扛一天是一天。接着,今年5月我又发现洗衣机好像有点漏水,但是那个程度远远没有去年8月那么明显。当我拆开洗衣机的后盖,摸了半天以后发现。那个漏水点居然是我上一次捆过电工胶布的地方,也就是捆了电工胶布的里面居然漏水了。那个口子跟我之前的那个还不是同一回事,于是我只能把之前的电工胶布全部拆掉,然后在有口子的地方先捆上生料带,然后再在外面捆电工胶布。这样处理,摸上去的确比较结实了,但实际上有没有用我不知道,但是第二次处理的时候,我已经想到必须有替代方案。所以第二次处理完以后,我赶紧在网上下单,买了一条通用的洗衣机排水管。

宿舍用的洗衣机是非常普通的波轮式洗衣机,6公斤的威力。这个洗衣机比较神奇,之前我之所以一直没有发现漏水,是因为洗衣机离地面几乎没有距离,所以如果不是水漫得很多,漫到外面去,你根本不知道下面漏水了。第一次我之所以觉得它漏水,而又真正的看到的确漏水是因为为了观察那个情况,我特意买了一个洗衣机的支撑架,把整个洗衣机垫高,这样的话拿着个手机打灯,我就可以看到洗衣机底部有没有漏水。所以直到我把洗衣机架高,我才发现原来洗衣机漏水漏得这么严重。后来洗衣机还没漏的很严重的时候,我就发现了,是因为过一段时间我就会趴在地上张望一下。

上个周六因为要值班,所以周末我没有回家,周日的上午我把床上用品洗了,因为刚好赶上了好天气,接着我发现好像洗衣机又漏水了。那种漏水若有若无的,因为摸上去有点潮潮的,但又不至于有一滩水。周日的下午有时间,我终于在研究了一番如何更换排水管以后拆开了洗衣机的后盖,进而发现上一次被我捆了生料带和电工胶布的地方已经发生了严重的变形。估计如果不是有生料带和电工胶布的纠缠,那个排水管估计已经整条断开了。但是那个部分看上去已经变形,用手按一下,那个捆绑的地方能从生料袋的上方挤出一点水。所以可想而知,地上那种若有若无的水可能是排水比较猛的时候水从上方渗出。

排水管怎么更换已经研究过,新的排水管也已经就位,所以这一次我再也没想过要修那个排水管了,而是直接把它卸下来。把那根管卸下来的时候我发现,如果我把洗衣机放平,然后把底部的挡鼠板拿下,就会看到排水管的某个地方有个卡扣。拆开那个卡扣就会发现威力这个型号的洗衣机居然是一根排水管从洗衣机正下方的排水口一直通到洗衣机外面。就节省的程度来说,这样的确很省,因为有些洗衣机是双管设计的,洗衣机内一根管,洗衣机外一根管,这样的话无论哪根坏了你都得换,但威力的这个设计,无论是里面漏了还是外面漏了,你只换一根管就足够了,但问题是更换这根管首先你得把管拆下来,其次你得把洗衣机放平。别的洗衣机即便要换两根管都只是拆洗衣机后盖,而这个洗衣机,即便你只换一根管,你也需要卸两个面板。幸好这台洗衣机不算太重,我一个人还马马虎虎搞定,如果这不是一个6公斤而是一个10公斤的洗衣机,这个洗衣机的底盘又非常的重的话,那么这个必须把洗衣机放平的操作就会把人折腾死。

因为换新的排水管的时候,我手边并没有百得胶,所以我用了两个卡扣去固定洗衣机的排水管,一个是排水管送的钢箍,另外一个是洗衣机原装的夹子。完整地换过一次洗衣机排水管以后,我总算不慌了,即便以后又坏了又要更换,我也知道该怎么个操作法了。

2023-08
28

升级到win11专业版

By xrspook @ 9:16:08 归类于: 烂日记

上周四的晚上,宿舍的电脑开机比较慢。神舟miniPC5的问题是过上一段时间开机画面就会消失,也就是说你看不到神舟电脑的logo,但是可能某一次windows更新以后,那个东西又出现了。这台电脑我刚买回来的时候就已经发现了这个问题,系统自带的是正版的win11家庭版,但是我觉得win11用起来一般般,各种不顺手,于是当我想把那个重装为win10专业版的时候发现没有开机画面,也就是我没有办法进入BIOS,没办法设定USB启动,于是刚买回来的那个周末,我就不得不去实体店找他们的售后。修电脑的大叔把电脑接上以后发现的确是不行的,于是他就把盖子拆开,然后电池放电再装回去,开机logo就有了。他总觉得是不是我做了什么改动,又或者是动了什么东西,但我真的是什么都没动过。把机器拿回家的时候,我挺忐忑的,因为我不知道那个logo什么时候会消失,但起码我在那个logo消失之前成功地把win10专业版装上去了。往后好长一段时间里,我都好像有看到那个logo,但不知道从什么时候开始又不见了,但是某次 windows更新以后又出现了,但可能出现个一两次以后又没有了。之所以这么神经,好像是主板的问题。这个时灵时不灵的东西习惯了就无所谓了,反正要不要那个logo都不重要,在我需要的时候,如果我真需要那个logo,真需要进入BIOS进行重装,就把电池抠出来放电就好。

前段时间据说微软已经做了个计划表,说什么时候要放弃win10,于是我就想宿舍这台电脑有机会我就得升级到win11,因为我曾经看见过那个界面,但是当时我一点兴趣都没有,所以没有理会。当时为了不看那个界面,我还进行了某些改动,具体是什么我已经不记得了,但是近一个月来,我一直在等待着windows更新那里可以升级到win11的提示。周四的晚上开机的确很慢,在进入桌面之前,居然就弹出一个界面说可以升级win11,要不要升级?我赶紧点“要”。接下来就进入了windows,当我在windows更新那里再点升级到win11的时候,发现前两次都毫无反应,都是说服务器连接错误,第3次的时候,在任务管理器里我看到下载流量终于动了起来,所以我感觉终于连上服务器可以下载了。到晚上睡觉的时候还没下载完,所以我就开着电脑去睡觉,大概睡到接近凌晨2点的时候我起来看了一眼,发现已经下载完毕,可以安装和重启电脑了。所以在迷迷糊糊之间我就点击了马上重启,然后安装win11。从点击重启到安装完毕进入桌面大概用了15分钟。虽然那个界面说可能在安装过程中要进行多次重启,但实际上一次都没有。那个安装百分比通常都是巴拉巴拉地到某个数值,然后就停在那里好长一段时间,然后又巴拉巴拉地前进一段,卡在那里。如果没记错的话,在70%多的时候是卡得最久的。

家里我妈那台大唐电脑从win10专业版升级到win11专业版的时候,桌面壁纸都变了,但我宿舍这台机我发现屏保界面的图片变了,但是桌面还是win 10我选择的那个壁纸,这挺好,因为我觉得win11系统自带的默认壁纸都太鲜艳了。

从win7升级到win10我感觉挺顺手的,但是从win10升级到win11,我反倒觉得有些不那么顺畅。现在win12都很快要出来了,我不得不接受win11这个怪物。如果是从前,做win10钉子户就好,但如果我要继续用Microsoft 365,我就不得不一直保持使用他们适配的windows版本。

2023-08
27

连续日期累计求和

By xrspook @ 11:32:10 归类于: 烂日记

昨天说到库存查询,最后的展示方式是透视表,透视这个东西只要前面做对了,就可以实现,那就只是最后一个步骤而已,但是如何得到透视需要的所有东西呢?在做这个库存查询之前,如果我需要得到某数据在连续日期中的汇总,我会先把那些数据按日期分组,然后选定日期表里面其中一段连续日期,接着用左外的方式连接日期表和数据。但问题是在库存查询中,我最后的结果是透视的,这就意味着被透视的那些字段在没有被透视之前,是各自对应一段一样的日期表,如果最后透视出来的字段有5个,就意味着我有5段一样的日期表,我该怎么表达这个东西呢?

在解决这个多段一模一样的连续日期之前,我首先攻克的是累计数。在SQL里面实现累计数有好几种方式,但问题是不是每一个都适合在Excel的VBA里实现,比如窗口函数over在Excel里面就是不支持的,虽然窗口函数的效率是最高的。对同一个表进行子查询可以实现累计,但问题是这样生成的累计无法用在下一步的透视里使用,接着我在另外一个方案里面看到了笛卡尔积的方法,笛卡尔积得出来的结果跟子查询完全一样,但笛卡尔积出来的结果可以用在下一步的透视里,而且同样的数据,笛卡尔积的运行效率比子查询高(可能是我测试的数据少?)。这个累计数的问题,我在Power Pivot里也研究过。我觉得PP的解决方案跟子查询有点类似。在计算累计数的时候,PP的效率很高。在用PP实现累计数之前,我曾经用Power Query实现累计数。我的PQ解决办法是先生成变化数,然后按日期把变化数累加起来。接下来用日期表跟这个数据左外连接,如果不是天天都有变化数,那么这个合并后的累计肯定会有空行,这个时候再用向下填充的方式补全。用这样的方法在PQ里的确是可以计算出每天的库存,但是效率非常低,所以在那以后,当我要做累计库存,我会直接放弃PQ选择PP。现在我已经掌握了在VBA里用SQL的方法实现。在筛选的日期不多,以及最后被透视出来的字段不多的情况下,效率挺高。比如最终我只需要展示一个月的数据。运行时间通常不会超过0.5秒。我个人觉得1秒是一个分水岭,如果1秒以上才出结果的话,我觉得这需要等待,尤其是运行时间超过2秒,我觉得那得优化了。低于0.5秒的运行时间对我来说几乎是无感的,我可以接受这种方案。

在累计数可以实现之后我要继续研究怎么按照条件需求把日期表捆绑上去。折腾了好长一段时间,都是没什么结果,于是我就去吃午饭了,在去吃午饭的路上,我突然想到,要把这个日期表扩充开来,实际上我不就是要做一个按条件笛卡尔积吗?所以我需要进行左外连接左边的部分,在这个情况下就不是一个普通的日期表,而是被透视项和日期表进行笛卡尔积的东西。笛卡尔积这个东西,如果数据很多会是一个噩梦,甚至会让电脑崩溃,所以所有教程都会告诉你,如果你要的不是这种东西,尽量不要做这种操作。但思前想后,我发现我正是需要这种东西。吃过午饭后,我赶紧去测试我的想法,果然,用笛卡尔积的结果再加后续的操作,我就能生成我需要的东西,并最终能以透视的方式展示出来。

我感觉现在当我把一些最基础的东西用熟练了以后,渐渐地我体会到了一些其实你明明知道,但是你却完全没有料到可以这么用的方法。

既然人可以通过某些逻辑得到某些结果,那么我应该可以按照这些逻辑生成一些自动化的方法,在这个时候,我最讨厌例外情况。

© 2004 - 2024 我的天 | Theme by xrspook | Power by WordPress