AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题

问题[vba](dba)

Martin Hope
JAUGRY
Asked: 2021-10-20 22:57:07 +0800 CST

如何使用不同的表将一列分成两列?

  • 0

我正在用 VBA 开发一个前端应用程序,它链接到一个 Oracle 数据库。在 Oracle 中有两个表Table1和Table2,它们通过 expTypeID 和 measID 相互关联:

Table1
expTypeID | measID| val
12          20001   1.1
13          20002   200
13          21043   250
12          29321   0.9
13          29322   150
15          23450   23000
Table2
expTypeID | measID | productID | productName
12          20001      100023   Apple
13          20002      100023   Apple
13          21043      129842   Pear
12          29321      198372   Orange
13          29322      198372   Orange

我想得到一个新表,所有产品都包含不同列中特定 expTypeID 的值,例如 expTypeID = 12 -> ""Density"" 和 expTypeID = 13 -> ""EModulus"":

GoalTable
productName | productID |   Density |   EModulus
Apple         100023          1.1         200
Pear          129842           -          250
Orange        198372          0.9         150

我知道当所有必要的数据都在一个表中可用时是可能的:show-one-column-data-as-two-columns-in-sql(我发现 mat 提出的查询特别有用)。当数据存在于两个表中时是否仍有可能?

提前致谢

oracle vba
  • 1 个回答
  • 77 Views
Martin Hope
Kiran Chapidi
Asked: 2020-04-30 01:52:05 +0800 CST

无法登录到 MS Access 数据库

  • 0

下面是一些授权用户登录 MS Access 数据库的 VBA 代码。我正在尝试修复此代码,但我不明白此代码段中有什么问题。

Private Sub cmdLogin_Click()
Dim lngUserID As Long
    lngUserID = Nz(DLookup("UserID", _
    "tblUser", "username = '" _
    & Me!cbousername _
    & "' AND Password = '" _
    & Me!txtPassword & "'"), 0)
    If lngUserID = 0 Then
        MsgBox "Username and/or password are incorrect."
        Me!txtPassword.SetFocus
    Else
        MsgBox "Registration successful!"
        OptionSetting "CurrentUserID", CStr(lngUserID)
        DoCmd.Close acForm, Me.Name
        DoCmd.OpenForm "Homepage"
    End If
      SetWebControlAsIE9
    ChangeWebControlFeature
END SUB

VBE 中的调试器显示以下以黄色突出显示的代码。有人可以帮助我了解问题所在吗?

lngUserID = Nz(DLookup("UserID", _
    "tblUser", "username = '" _
    & Me!cbousername _
    & "' AND Password = '" _
    & Me!txtPassword & "'"), 0)

ms-access vba
  • 1 个回答
  • 82 Views
Martin Hope
Bubaya
Asked: 2018-01-23 01:09:50 +0800 CST

访问:变体类型查询中 VBA 的数字格式

  • 2

可以说我有两个查询

select iif(condition, col, null) from table

select f(col) from table

其中col是双值列f是 VBA- public function(value as double) as variant。稍后,我将相应字段的格式更改为以某种数字格式显示,例如百分比。我已经决定它f应该是 avariant因为它应该在适当的时候返回 Null。但是,在前一种情况下,我指定的格式得到尊重,但如果我切换到后者,数字格式将被完全忽略。为什么?

ms-access vba
  • 1 个回答
  • 275 Views
Martin Hope
ConanTheGerbil
Asked: 2017-12-15 06:03:35 +0800 CST

如何从 VBA 函数压缩当前的 MS Access 数据库

  • 3

我希望能够从数据库的 VBA 模块中运行“压缩和修复”过程。

我有一个偶尔运行的批处理,它删除一些旧表,从其他数据库重新导入它们,重命名几个字段,进行一些更新并进行一些其他小的更改。这个过程不是火箭科学,但有几个步骤,所以它确实需要自动化。

问题是几个步骤(更新)会暂时增加数据库的大小,这可能会导致后续导入出现问题。

如果我手动执行该过程(包括压缩),那么一切正常,我最终得到一个 800MByte 的数据库。如果我使用我的自动 VBA 脚本(没有压缩),那么当数据库超过 2GB 限制时,它会在中途崩溃。

我在这个主题上找到了几个线程,但它们都是 3 到 4 岁(或更多),他们描述的方法似乎不再起作用。

它们是适用于 Office 365(版本 1720)的任何解决方案吗?

“自动压缩”导致数据库在关闭时压缩,它不允许在步骤之间添加数据库的压缩。

我试过这个:

Public Sub CompactDb2()
  Dim control As Office.CommandBarControl
  Set control = CommandBars.FindControl(Id:=2071)
 control.accDoDefaultAction
End Sub

和这个:

Public Sub CompactDb1()
    CommandBars("Menu Bar").Controls("Tools").Controls("Database utilities"). _
    Controls("Compact and repair database...").accDoDefaultAction
End Sub

和这个....

Public Sub CompactDb3()
    Application.SetOption "Auto compact", True
End Sub

其中

ms-access vba
  • 2 个回答
  • 22407 Views
Martin Hope
MGaddict
Asked: 2017-04-22 09:14:00 +0800 CST

运行 VBA 后,我失去了对数据库的独占访问权限

  • 0

我写了一些 VBA 来轻松地将 excel 电子表格导入到我的数据库中的表中。这样,用户只需单击表单上的一个按钮,并回答有关要导入的文件的一些问题。问题是导入完成后,我尝试修改数据库中的任何其他内容,但收到消息“此时您没有对数据库的独占访问权限。如果继续进行更改,您可能以后不能救他们了。” 然后我必须退出数据库并重新打开它以进行任何更改。我以前在其他版本的 Access 上做过这个没有问题。所以我不知道是我在某个地方有错字,还是从 Access 2013 到 2016 发生了某些变化导致了这个问题。目前,数据库位于我的本地机器上。最终,这将被移动到 SharePoint 站点并拆分为 2 个访问文件。在它主要工作之前我不想这样做,因为我没有任何地方可以上传到 SharePoint 而没有很多人可以访问它。

Private Sub ImportNewTB_Click()
On Error GoTo ImportNewTB_Click_Err 'If an error occurs anywhere along the way, make sure you still clean up the memory before quiting

Dim OwssvrFile As DAO.Database 'This is the open connection to the file
Dim OwssvrInfo As DAO.Recordset 'This is the recordset for the teachers information
Dim fileName As String 'This is the name of the file being opened
Dim dbs As DAO.Database
Dim CurrentTBDB As DAO.Recordset 'This is to make a connection to our current table
'Dim ExcelHdrs(0 To 20) As Variant 'This is an Array with the headers from the Excel file.
Dim numRecords As Integer
Dim WksName As String
Dim TimeStamp As Date

fileName = getOpenFile() 'Use the function I built in the Module
If fileName = "" Then GoTo ImportNewTB_Click_Exit 'If they didn't select anything, then just give up on life and exit

WksName = InputBox("Enter the name of the worksheet: ", "Worksheet Name", "owssvr")
numRecords = InputBox("Enter the number of records in the Worksheet: ", "Num Records", 2412)
WksName = WksName & "$A1:BE" & numRecords + 1

'Once we have a real file, open it already
Set OwssvrFile = OpenDatabase(fileName, False, True, "Excel 12.0; HDR=YES;")
'Create Recordset from the excel file.
Set OwssvrInfo = OwssvrFile.OpenRecordset(WksName)
OwssvrInfo.MoveFirst 'Goto the first line of the recordset

Set dbs = CurrentDb
Set CurrentTBDB = dbs.OpenRecordset("SELECT * FROM CurrentTB")

TimeStamp = Now()

Do
    With CurrentTBDB
        .AddNew
        .Fields!EntryDate = TimeStamp
        .Fields!ProjectName = OwssvrInfo.Fields(0)

        .Update
    End With

    OwssvrInfo.MoveNext 'All of that for entry 1, only 2000 more lines to go
Loop Until OwssvrInfo.EOF

' Tidy up, This closes everything out and releases the memory
ImportNewTB_Click_Exit:
On Error Resume Next 'Basically this says, if there's an error, I don't care, do this anyway
MsgBox "Input Complete!"
OwssvrInfo.Close
OwssvrFile.Close
CurrentTBDB.Close
Set CurrentTBDB = Nothing
Set dbs = Nothing
Set OwssvrInfo = Nothing
Set OwssvrFile = Nothing
Exit Sub

ImportNewTB_Click_Err: 'This produces an error message if one exists
MsgBox Err.Number & " " & Err.Description, vbCritical, "Error!"
Resume ImportNewTB_Click_Exit 'Make sure we still clean up before leaving
End Sub
vba ms-access-2016
  • 1 个回答
  • 338 Views
Martin Hope
Feillen
Asked: 2016-11-26 04:08:01 +0800 CST

ms-access:表单和子表单交互的问题

  • 0

有一个绑定到主表的主窗体,public_OUT_Detalle_PMC。并且有一个表单绑定到一个较小的表 public_ficha_negocio,它是较大表中的字段选择。第二个表单用作子表单,我想将对子表单所做的编辑保存到主表中。

我曾尝试使用简单的 SQL 更新查询,但由于某些未知原因,我无法使其正常工作,这让我发疯。

    Dim db As DAO.Database
    Dim qdfFN As DAO.QueryDef
    Dim rsFN As DAO.Recordset
    Set db = CurrentDb
    Set qdfFN = db.CreateQueryDef("")
    qdfFN.sql = "select * from [public_ficha_negocio] where [Codigo_RQM_Necesidad]='" & Me.Codigo_filtro.value & "';"
    qdfFN.ReturnsRecords = True
    Set rsFN = qdfFN.OpenRecordset
    Dim qdf As DAO.QueryDef
    Dim sSQL As String
    sSQL = "UPDATE [public_OUT_Detalle_PMC] SET " & _
              {a lot of fields are updated, I cut them out of the paste for simplicity}
              "WHERE [public_OUT_Detalle_PMC].[Codigo_RQM_Necesidad] = '" & rsFN!Codigo_RQM_Necesidad & "');"
    Set qdf = db.CreateQueryDef("", sSQL)
    qdf.Execute dbFailOnError
    qdf.Close
    qdfFN.Close
    rsFN.Close
    Set qdfFN = Nothing
    Set rsFN = Nothing
    Set qdf = Nothing

该查询qdfFN用于检索较小表的记录,我想将哪些数据“传递”到较大表。该查询qdf要么不起作用,要么我不了解如何使用这些 vba 对象。

我曾经Debug.print检查过的值rsFN并且它们是正确的,我的意思是,我想传递到更大的表上的值就在那里!这让我头疼

ms-access vba
  • 1 个回答
  • 127 Views
Martin Hope
abalter
Asked: 2014-08-12 09:43:05 +0800 CST

MS Access 使用哪个版本的 VB?

  • 0

MS Access 在代码编辑器中使用哪个版本的 VB?是 VBA、VB.Net 还是其他?在寻找帮助/解决方案时,我有时会感到困惑。例如,在 Access 中,您不能执行以下操作:

Dim s as String = "hello"

但你可以这样做:

Dim s
s = "hello"
ms-access vba
  • 1 个回答
  • 697 Views
Martin Hope
abalter
Asked: 2014-08-06 15:18:06 +0800 CST

MS Access 按表单查询打开查询,但不使用新表单数据运行它

  • 1

我在 MS Access 中创建了一个按表单查询。表格中的每个字段都有一个文本字段。我只用一个开始测试。该字段的查询条件是

Like "*" & [Forms]![MasterSearchForm]![KeyWords] & "*" Or [Forms]![MasterSearchForm]![KeyWords] is Null

该表单有一个带有 onclick 事件的按钮来打开查询。

如果在我单击按钮时查询已关闭,它将使用适当的条件打开查询。但是,如果我更改表单中的值,然后再次单击该按钮,则只会出现旧结果。如果我手动执行查询,那么它确实会从表单中吸取数据。为什么每次都需要关闭查询?如何使按钮运行查询,而不仅仅是关注查询选项卡?

Private Sub Run_Click()
On Error GoTo Run_Click_Err

    DoCmd.OpenQuery "QueryFromMasterSearch", acViewNormal, acReadOnly

    Run_Click_Exit:
    Exit Sub

    Run_Click_Err:
    MsgBox Error$
    Resume Run_Click_Exit

End Sub
ms-access vba
  • 1 个回答
  • 2642 Views
Martin Hope
Looking_for_guidance
Asked: 2014-04-28 16:22:37 +0800 CST

VBA @ Access 替换大量列表中的值

  • 1

我有一个关于 VBA @ MS Access 的问题(这就是我实际上在这里的原因:P)。

所以,我有一个关于鞋子的庞大数据库(嗯,对我来说它很大,大约 23K+ ID)。它有 5 列:ID、商品编号、尺寸 (mm)、成对(有现货)和 EAC13 代码。它每天更新。每天我都会在 CSV 上获取更新(所有这些 ID 都重新)并创建新表,尽管我只需要更新库存可用性。但是,为了获得报告,我必须更改一列:尺寸。我必须得到 2 份报告,一份是我以毫米为单位的鞋码,另一份是欧洲尺码。例如:245毫米等于35。就这么简单。我有一个 VBA,我认为它可以帮助我替换所有这些值(是的,“大小”列上的所有 23k),就像这样

Public Sub Substitui()
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim fld As DAO.Field
Dim strSQL As String

Set db = CurrentDb()

strSQL = "SELECT * FROM BS_2704"

Set rst = db.OpenRecordset(strSQL, dbOpenDynaset)

rst.MoveFirst
Do Until rst.EOF
For Each fld In rst.Fields
If fld.Value = "150" Then
rst.Edit
fld.Value = "24"
rst.Update
End If

If fld.Value = "160" Then
rst.Edit
fld.Value = "25"
rst.Update
End If

(...)

If fld.Value = "325" Then
rst.Edit
fld.Value = "50"
rst.Update
End If


Next fld
rst.MoveNext
Loop
rst.Close
Set rst = Nothing
End Sub

无论如何...这只会更改 150 个条目(或多或少)。百万美元的问题是,为了让这个 VBA 更改所有 23k 条目,我在这里是否缺少任何类型的行?

我是这个领域的n00b,所以我会很感激一些n00b therms作为开始。谢谢你的耐心。

ms-access vba
  • 1 个回答
  • 2062 Views
Martin Hope
Juan Velez
Asked: 2014-01-28 17:25:11 +0800 CST

VBA 最大化访问应用程序主窗口

  • 3

我需要我的访问应用程序窗口全屏打开。我试过使用:

DoCmd.RunCommand acCmdAppMaximize

和

DoCmd.Maximize (which I think only maximizes a Form).

也不为我工作?我将 VBA 代码放入其中,OnLoad event并尝试将其放入命令按钮的单击事件中。

我想我需要先将焦点设置到实际的访问应用程序(主窗口),然后运行DoCmd.RunCommand acCmdAppMaximize命令,但不知道如何实现这一点。

我注意到,如果我单击命令按钮而DoCmd.RunCommand acCmdAppMaximize没有任何反应,但是如果首先我移动窗口(通过拖动它的标题栏)然后单击该按钮,它实际上会最大化窗口。

以前有人有运气吗?

更新:

不知道为什么,但我能得到的唯一方法

DoCmd.RunCommand acCmdAppMaximize

工作,首先调用

DoCmd.RunCommand acCmdAppMinimize (minimize window first)

然后调用DoCmd.RunCommand acCmdAppMaximize(然后最大化)

ms-access vba
  • 3 个回答
  • 18553 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve