VBA 数据库同一表的当前行与其他行的主键重复判断实现方案
目的,判断是否主键重复,不重复则登录新数据,重复则不登录。
定义类型:
DataRecord
tableName 表名
rowNumber 行号
columnName 列名
data 数据
想要实现的代码逻辑如下:
模拟数据库的登录过程。假设现在登录了5条数据,要登录第6条数据。
规则1,判断其他5行数据的所有列,与第6行已经录的所有列的数据一一比较,如果存在不一致的,说明主键不重复,可以登录新的数据。
规则2,如果不存在一致的,则判断我们这次要登录的这个列的其他行的数据,是否存在不一致的,如果不一致则主键不重复,可以登录新的数据。
规则3,如果仍然没有不一致的数据,说明主键重复,不能登录这条数据。
代码结构如下:
私有DataRecordType类
模块1
DataRecordType类代码
' DataRecordType 类模块
Private pTableName As String
Private pRowNumber As Long
Private pColumnName As String
Private pData As String' 定义公共属性以访问私有变量
Public Property Get tableName() As StringtableName = pTableName
End Property
Public Property Let tableName(value As String)pTableName = value
End PropertyPublic Property Get rowNumber() As LongrowNumber = pRowNumber
End Property
Public Property Let rowNumber(value As Long)pRowNumber = value
End PropertyPublic Property Get columnName() As StringcolumnName = pColumnName
End Property
Public Property Let columnName(value As String)pColumnName = value
End PropertyPublic Property Get data() As Stringdata = pData
End Property
Public Property Let data(value As String)pData = value
End Property
模块1代码
Sub AddData(dataCollection As Collection, tableName As String, rowNumber As Long, columnName As String, data As String)Dim record As DataRecordTypeSet record = New DataRecordType ' 关键:实例化对象record.tableName = tableNamerecord.rowNumber = rowNumberrecord.columnName = columnNamerecord.data = datadataCollection.Add record
End SubFunction InsertData(dataCollection As Collection, tableName As String, rowNumber As Long, columnName As String, data As String) As BooleanDim i As LongDim sameTableRowData As StringDim otherTableRowData As StringDim record1 As DataRecordTypeDim record2 As DataRecordTypeDim noexist As BooleanFor i = 1 To dataCollection.CountSet record1 = dataCollection(i) ' 关键:从集合中获取对象If record1.tableName = tableName And record1.rowNumber = rowNumber ThenFor j = 1 To dataCollection.CountSet record2 = dataCollection(j)If record2.tableName = record1.tableName And record2.columnName = record1.columnName And record2.rowNumber <> record1.rowNumber ThenIf record2.data <> record1.data ThenCall AddData(dataCollection, tableName, rowNumber, columnName, data)InsertData = TrueExit FunctionEnd IfExit ForEnd IfNext jEnd IfNext iFor j = 1 To dataCollection.CountSet record2 = dataCollection(j)If record2.tableName = tableName And record2.columnName = columnName And record2.rowNumber <> rowNumber ThenIf record2.data <> data ThenCall AddData(dataCollection, tableName, rowNumber, columnName, data)InsertData = TrueExit FunctionEnd IfExit ForEnd IfNext jInsertData = False
End FunctionSub TestInsertData()Dim dataCollection As CollectionSet dataCollection = New Collection' 添加前 5 条数据Call AddData(dataCollection, "Table1", 1, "Column1", "Data1")Call AddData(dataCollection, "Table1", 1, "Column2", "Data2")Call AddData(dataCollection, "Table1", 1, "Column3", "Data3")Call AddData(dataCollection, "Table1", 2, "Column1", "Data1")Call AddData(dataCollection, "Table1", 2, "Column3", "Data3")' 插入第 6 条数据并检查结果Dim result As Booleanresult = InsertData(dataCollection, "Table1", 2, "Column2", "Data2")If result ThenMsgBox "第 6 条数据已插入。"ElseMsgBox "第 6 条数据未插入(与现有数据重复)。"End If
End Sub
运行TestInsertData()
相关文章:

VBA 数据库同一表的当前行与其他行的主键重复判断实现方案
目的,判断是否主键重复,不重复则登录新数据,重复则不登录。 定义类型: DataRecord tableName 表名 rowNumber 行号 columnName 列名 data 数据 想要实现的代码逻辑如下: 模拟数据库的登录过程。假设…...

DeepSeek开启AI办公新模式,WPS/Office集成DeepSeek-R1本地大模型!
从央视到地方媒体,已有多家媒体机构推出AI主播,最近杭州文化广播电视集团的《杭州新闻联播》节目,使用AI主持人进行新闻播报,且做到了0失误率,可见AI正在逐渐取代部分行业和一些重复性的工作,这一现象引发很…...
android为第三方提供部分系统接口
文章目录 Settings - 亮灭屏Settings - 恢复出厂设置Settings - 数字锁屏/解锁Settings - 设置系统时间PackageInstaller - 安装/卸载第三方应用摘要:本文对系统模块进行改造,提供广播等形式的接口对外提供无法直接调用的系统级别接口,实现部分功能的集合。如果是广播形式,…...

Android 自定义View 加 lifecycle 简单使用
前言 本文是自定义view中最简单的使用方法,分别进行 ‘onMeasure’、‘onDraw’、‘自定义样式’、‘lifecycle’的简单使用,了解自定义view的使用。 通过lifecycle来控制 动画的状态 一、onMeasure做了什么? 在onMeasure中获取view 的宽和…...
在K8S中,svc底层是如何实现的?
在Kubernetes中,Service是集群内部的一个抽象层,用于定义一组Pod的逻辑分组,并提供统一的访问入口点,同时还可以对这些Pod提供负载均衡和网络代理功能。Service底层的实现主要包括以下几个关键组件和技术: 标签选择器…...
Python pyqt小技巧:默认打开某文件(即自动加载某文件)
文章目录 前言 前言 有的时候需要界面自动加载某文件。不需要人为在打开选择。 import os #自带 import sys # 获取该程序当前文件目录dir_name os.path.dirname(os.path.realpath(sys.argv[0])) f1 os.path.join(dir_name, 题目调度规程.xls) # 拼接路径 文件必须和程序在…...

vue2实现组件库的自动按需引入,unplugin-auto-import,unplugin-vue-components
1.使用ant-design-vue或者element-ui时,如何每个组件都去import导入组件,大大降低了开发效率,如果全局一次性注册会增加项目体积,那么如何实现既不局部引入,也不全局注册? 2.在element-plus官网看到有说明…...

C++第十节:map和set的介绍与使用
【本节要点】 1.关联式容器2.键值对3.map介绍与使用4.set介绍与使用5.multimap与multisedd的介绍与使用 一、关联式容器:数据管理的核心利器 关联式容器是STL中用于高效存储和检索键值对(key-value pair)的数据结构,其底层基于红黑…...
线性代数笔记28--奇异值分解(SVD)
1. 奇异值分解 假设矩阵 A A A有 m m m行 n n n列 奇异值分解就是在 A A A的行向量上选取若干对标准正交基,对它作 A A A矩阵变化并投射到了 A A A的列空间上的正交基的若干倍数。 A v → u → σ u → ∈ R m v → ∈ R n A\overrightarrow{v}\overrightarrow{u…...
【从零开始学习计算机科学】硬件设计与FPGA原理
硬件设计 硬件设计流程 在设计硬件电路之前,首先要把大的框架和架构要搞清楚,这要求我们搞清楚要实现什么功能,然后找找有否能实现同样或相似功能的参考电路板(要懂得尽量利用他人的成果,越是有经验的工程师越会懂得借鉴他人的成果)。如果你找到了的参考设计,最好还是…...

项目中同时使用Redis(lettuce)和Redisson的报错
温馨提示:图片有点小,可以放大页面进行查看... 问题1:版本冲突 直接上图,这个错表示依赖版本不匹配问题,我本地SpringBoot用的是2.7,但是Redisson版本用的3.32.5。 我们通过点击 artifactId跟进去 发现它…...
leetcode-数组
26. 删除有序数组中的重复项 已解答 简单 相关标签 相关企业 提示 给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 n…...
人工智能里的深度学习指的是什么?
深度学习(Deep Learning, 简称DL)是机器学习领域的一个重要分支,它通过构建和训练深层神经网络模型,从大量数据中自动学习和提取特征,以实现复杂任务的自动化处理和决策。以下是关于深度学习的详细介绍: 一…...
docker本地部署ollama
启动ollama容器 1.使用该命令启动CPU版运行本地AI模型 docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama 2.此命令用于启动GPU版本运行AI模型 前提是笔记本已配置NVIDIA的GPU驱动,可在shell中输入nvidia-smi查看详细情况…...
LangChain构建语言模型驱动应用的强大框架
LangChain 核心功能与组件链(Chains)记忆(Memory)提示模板(Prompts)代理(Agents)数据检索(Indexes) 应用场景文档问答自动化工作流知识管理系统 发展历程总结…...

2025-03-08 学习记录--C/C++-PTA 习题10-2 递归求阶乘和
合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。💪🏻 一、题目描述 ⭐️ 二、代码(C语言)⭐️ #include <stdio.h>double fact( int n ); double facts…...

浅谈 DeepSeek 对 DBA 的影响
引言: 在人工智能技术飞速发展的背景下,DeepSeek 作为一款基于混合专家模型(MoE)和强化学习技术的大语言模型,正在重塑传统数据库管理(DBA)的工作模式。通过结合其强大的自然语言处理能力、推理…...

AI如何重塑运维体系
AI大模型的引入正在从被动响应到主动预防、从经验驱动到数据智能全面重构运维体系。 一、颠覆传统运维模式的技术革新 故障预测:从“救火”到“防火” AI大模型通过整合历史日志、硬件状态、网络流量等多模态数据,结合时间序列分析(如LSTM&am…...
linux 内网下载 yum 依赖问题
1.上传系统镜像 创建系统目录,用户存放镜像,如下: mkdir /mnt/iso上传 iso 文件到 /mnt/iso 文件夹下。 2.挂载系统镜像 安装镜像至 /mnt/cdrom 目录中 mount -o loop /mnt/iso/CentOS-7-x86_64-Minimal-xx.iso /mnt/cdrom3.修改yum源配…...
mapbox开发小技巧
自定义图标 // 1、单个图标 const url ./static/assets/symbols/code24x24/VIDEO.png // 图标路径 map.loadImage(url ,(error, image) > {if (error) throw errormap.addImage(video-icon, image) })// 2、雪碧图利用canvas // json和png图片 function getStyleImage(fil…...

大型活动交通拥堵治理的视觉算法应用
大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...
React Native在HarmonyOS 5.0阅读类应用开发中的实践
一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...

linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...

如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...

Ascend NPU上适配Step-Audio模型
1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤)&#x…...
LeetCode - 199. 二叉树的右视图
题目 199. 二叉树的右视图 - 力扣(LeetCode) 思路 右视图是指从树的右侧看,对于每一层,只能看到该层最右边的节点。实现思路是: 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...
深入理解Optional:处理空指针异常
1. 使用Optional处理可能为空的集合 在Java开发中,集合判空是一个常见但容易出错的场景。传统方式虽然可行,但存在一些潜在问题: // 传统判空方式 if (!CollectionUtils.isEmpty(userInfoList)) {for (UserInfo userInfo : userInfoList) {…...

ubuntu22.04有线网络无法连接,图标也没了
今天突然无法有线网络无法连接任何设备,并且图标都没了 错误案例 往上一顿搜索,试了很多博客都不行,比如 Ubuntu22.04右上角网络图标消失 最后解决的办法 下载网卡驱动,重新安装 操作步骤 查看自己网卡的型号 lspci | gre…...

算法打卡第18天
从中序与后序遍历序列构造二叉树 (力扣106题) 给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。 示例 1: 输入:inorder [9,3,15,20,7…...

PydanticAI快速入门示例
参考链接:https://ai.pydantic.dev/#why-use-pydanticai 示例代码 from pydantic_ai import Agent from pydantic_ai.models.openai import OpenAIModel from pydantic_ai.providers.openai import OpenAIProvider# 配置使用阿里云通义千问模型 model OpenAIMode…...