带逗号和引用表的字符串?

时间:2016-01-04 17:10:07

标签: sql-server string vb6

我有一个我们正在维护的遗留VB应用程序。我们采取的设计决策是将某些数据点存储为连接字符串。由于大多数代码都是完整的,因此这一变化是一成不变的。

我正在运行一系列值的循环。我正在做的是,查找参考表中每个值的LABEL。我需要能够在一个标签中显示值。我很难将值集中到字符串中,然后将其显示在标签中。这是我的代码......

If strField = "Expenditures" Then
      If InStr(1, strOldValue, ",") > 0 Then
              strArray = Split((strOldValue), ",")
                    For x = 0 To UBound(strArray)
                        For Each item In strArray
                            strMessage = DLookUp(1, "Label", "tblText_References", "ID = '" & item & "'
**''''******here I'm trying to save teh value in strMessage, however, at next item, I need it to be added to strMessage in some fashion, with a (,), I'm not sure how to do it. There are anywhere from 2 to 4 ITEMS i might have.**
                        Next item
                    Next
       End if
End if

2 个答案:

答案 0 :(得分:9)

您一定要重新考虑如何存储膳食数据。切勿在逗号连接的单个列中存储多个值。相反,您希望创建一个表来包含所选项,然后使用一对多关系将JOINed设置为其他表。

以下代码显示了如何完成此操作的示例。

创建一个表格,其中包含Users与之关联的Meals

CREATE TABLE dbo.Users
(
    UserID INT NOT NULL
        CONSTRAINT PK_Users
        PRIMARY KEY CLUSTERED
    , UserName VARCHAR(255) NOT NULL
);

创建一个表来描述Meals

CREATE TABLE dbo.Meals
(
    MealID INT NOT NULL
        CONSTRAINT PK_Meals
        PRIMARY KEY CLUSTERED
    , MealName VARCHAR(255) NOT NULL
);

创建一个将Users加入Meals

的联结表
CREATE TABLE dbo.UserMeals
(
    UserID INT NOT NULL
    , MealID INT NOT NULL
    , CONSTRAINT PK_UserMeals
        PRIMARY KEY CLUSTERED (UserID, MealID)
);

插入示例用户:

INSERT INTO dbo.Users (UserID, UserName)
VALUES (1, 'Test User');

插入四餐:

INSERT INTO dbo.Meals (MealID, MealName)
VALUES (80, 'Breakfast')
    , (81, 'Lunch')
    , (82, 'Dinner')
    , (83, 'Snack');

将一些示例行插入与用户关联的UserMeals表中:

INSERT INTO dbo.UserMeals (UserID, MealID)
VALUES (1, 80)
    , (1, 81);

向用户展示他们的相关膳食:

SELECT u.UserName
    , m.MealName
FROM dbo.UserMeals um
    INNER JOIN dbo.Users u ON um.UserID = u.UserID
    INNER JOIN dbo.Meals m ON um.MealID = m.MealID;

结果:

enter image description here

答案 1 :(得分:0)

这是所有需要的代码。我创建了一个名为strNEWmessage的新变量作为字符串。我已经有一个名为strMessage的变量作为字符串答案是:strNewMessage = strNewMessage& "" strMessage