2012-02-09 90 views
2

是否可以使用变量值作为参考变量的名称?例如:参考变量作为值 - VB6

Dim PersonName As String 
PersonName = recordset("PersonName") 

而不是PersonName作为人名的值,例如, JoeBloggs;引用变量本身就是JoeBloggs,即joebloggs = whatever。

我环顾四周寻找答案,因为我认为这将是一个常见问题;但我无法找到一个。

+0

为什么这会很常见?这就破坏了变量的全部意义 - 在运行时间之前你不知道它的价值! – 2012-02-09 20:20:32

+0

你能再澄清一下你的问题吗?也许用一个例子来指出每一步每个项目的价值。 – 2012-02-09 21:40:34

+1

你想要一本字典。 – SLaks 2012-02-09 21:56:33

回答

1

@ w0051977别担心,你的需要(如果我理解正确)确实有道理,我也希望这样做。如果你理解它,你希望能够使用字符串定义变量名称?就像,如果你的数据库中有一个“JohnDoe”,那么你想将你的变量的名字设置为一个名为JohnDoe的字符串,对吗?如果这是正确的,你不能直接在VB6中做到这一点,但是,在VB.NET我们有反射,所以有一些方法可以读取变量的名称,并将它作为字符串返回(尽管我明白你想要做相反的事情)。所以,在VB6要做到这一点最好的办法是以下...

Dim c As Collection ' where c is our collection to make it short-hand/less typing. 
Set c = New Collection ' you could have done As New Collection instead but this is better, trust me. 

c.Add "MyValue1", "JohnDoe" ' sets a variable named JohnDoe with value "MyValue1" 
c.Add "MyValue2", "JessKay" ' remember, these are stored as Variants, but can use as string. 

我们叫它...

MsgBox c("JohnDoe") ' this simple. 

所以C(“JOHNDOE”)将返回无论是在价值你已经设置了这个变量名称。

的小鸡同样的故事,说你想设置在它与女孩值另一个变量...

Dim abc As String 
abc = c("JessKay") ' thats all :) abc will equal "MyValue2" 

此外,请记住存储在VB6集合将始终被存储为变任何东西,所以需要比字符串更多的内存。但是,您仍然可以将其用作字符串或数字或其他任何您想要的内容。

很酷吗?

让我知道你的需求是否真的不同,我误解了你的问题。谢谢。