【问题标题】:Change via SQL Query the description of a column通过 SQL 查询更改列的描述
【发布时间】:2018-08-17 06:56:45
【问题描述】:

是否可以使用 SQL 语句更改 AccesDb 中列后面的描述? 更准确地说: 如何在 C# 中使用 SQL 为 Access 表中的列插入描述?

【问题讨论】:

  • 你的意思是要把结果列表中的Feldname改成fieldname
  • 不,Beschreibungs 字段中的数据 (Beschreibung = Desc.)
  • 看看这个:stackoverflow.com/questions/806362/… 建议的解决方案使用 VB,但我想你可以将它移植到 C#。
  • 目前还不清楚想要的结果应该是什么样子。似乎很清楚的是,您在一列中分隔了数据 - 如果您将该数据导入到具有专用列的单独表中,您可以使事情变得更容易。
  • 在访问中,列可以有描述,我正在尝试将数据插入到列后面的描述中

标签: c# sql ms-access


【解决方案1】:

无法使用 SQL 命令设置或更改字段的描述。

MS Access 数据库包含纯数据库元素,如 及其字段)。两者都具有纯数据库相关的属性,如数据类型字段大小必需属性、默认值设置或验证规则。应该可以使用 SQL 来管理所有这些事情。

但是……

这只是 MS Access 数据库可以包含的一小部分。 Access 数据库中的大多数对象都是围绕这些纯数据库事物构建的,以在用户友好的用户界面中显示表中的数据,并让用户/开发人员创建自定义前端来显示和管理数据标准数据表(这是一种特殊的预定义Access form)或更复杂和用户定义的forms报告

为支持用户围绕数据设计自定义用户界面,微软不仅定义了新的对象类型,如 formsreports,还为对象添加了多个属性在数据层上显示或编辑控件(如 TextBoxComboBox 等)中的数据时很有用。其中一些属性是 Input Mask格式说明。它们与数据的存储无关,而是为视觉服务。这些属性不能使用 SQL 进行管理,但可以使用像 DAO 这样的库以编程方式定义和更改,其中每个 field 都有一个 properties 集合,它不仅包含原始属性来自数据层,还包括为支持 Microsoft Access 的“可视”部分而添加的其他属性。

添加:

VBA 中的示例可能看起来像这样,将其翻译成 C# 应该不会太难:

Sub SetDescription(TableName As String, FieldName As String, Description As String)

    With CurrentDb
        With .TableDefs(TableName)
            With .Fields(FieldName)
                On Error GoTo Err_SetDescription
                .Properties("Description").Value = Description
            End With
        End With
    End With

Exit_SetDescription:
    Exit Sub

Err_SetDescription:
    Select Case Err.Number
        Case 3270
            With CurrentDb
                With .TableDefs(TableName)
                    With .Fields(FieldName)
                        .Properties.Append .CreateProperty("Description", dbText, Description)
                        Resume Next
                    End With
                End With
            End With
        Case Else
            MsgBox Err.Description, vbExclamation
            Resume Exit_SetDescription
    End Select

End Sub

【讨论】:

  • 谢谢!,你能给我一个如何构建它的例子吗?
  • 刚刚在VBA中添加了一个例子,应该可以翻译成C#。
  • 您是如何将更改保存到数据库的? (对不起,我是这项技术的新手)
  • 更改不是对数据的更改,而是对表/字段的更改。它在设置值的那一刻被保存。
【解决方案2】:

答案:

    private string InsertDescription( string mdbFile )
{
    string log = null;
    DAO.Database db;
    DAO.DBEngine dbEn = new DAO.DBEngine();
    DAO.Recordset rs;

    string value = "Bi pe di Ba pe di Buuuuuuuuuuuuuuuuuuuuuuu!!!!";
    string tabelName = "TAB";
    string columnName = "dbdb";

    try
    {
        db = dbEn.OpenDatabase(mdbFile, null, false, null);
        rs = db.OpenTable(tabelName, 0);
        rs.AddNew();

        db.TableDefs[tabelName].Fields[columnName].Properties["Description"].Value = value;
        rs.Update(1, false);
        rs.Close();

        log = "- Der Descriptionimport in die Datenbank war erfolgreich!";
    }

    catch( Exception ex )
    {
        log = "- Der Descriptionimport in die Datenbank war Nicht erfolgreich!" + Environment.NewLine + ex.Message;
    }

    return log;
}

【讨论】:

  • 您正在向表中添加记录,您不需要记录集来设置描述。此外,如果尚未使用 description 属性,则该属性将不存在,并且您会遇到异常。您显然没有付出任何努力将我在回答中写的内容以及您之前标记为解决方案的内容翻译成 C#。您的问题的“答案”仍然是:“不,不可能使用 SQL 更改描述”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多