Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > ASP .Net > ASP General > Printing a field with a hyphen in ?

Reply
Thread Tools

Printing a field with a hyphen in ?

 
 
David
Guest
Posts: n/a
 
      09-25-2006
Hi,

I have a field in a select query: 'Metal-XS' which is causing a problem
The recordset should look like: RS2("Metal-XS") but it says this does
not exist, and I cannot get the SQL to work in ASP when I add this
field. Is there any code way around this, or should I edit the db and
change/create a new field ?

Thanks

David

 
Reply With Quote
 
 
 
 
McKirahan
Guest
Posts: n/a
 
      09-25-2006
"David" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed) oups.com...
> Hi,
>
> I have a field in a select query: 'Metal-XS' which is causing a problem
> The recordset should look like: RS2("Metal-XS") but it says this does
> not exist, and I cannot get the SQL to work in ASP when I add this
> field. Is there any code way around this, or should I edit the db and
> change/create a new field ?


Don't know why a hyphenated field name fails.

Try enclosing it in brackets -- as is needed for reserved words:

RS2("[Metal-XS]").Value

Or maybe it just wants ".Value"...


 
Reply With Quote
 
 
 
 
Bob Barrows [MVP]
Guest
Posts: n/a
 
      09-25-2006
David wrote:
> Hi,
>
> I have a field in a select query: 'Metal-XS' which is causing a
> problem The recordset should look like: RS2("Metal-XS") but it says
> this does not exist, and I cannot get the SQL to work in ASP when I
> add this field. Is there any code way around this, or should I edit
> the db and change/create a new field ?
>

I would recommend the latter. Nonstandard characters should definitely
be avoided*, and if you have the opportunity to eliminate them, you
should take it.
If you can't do this for some reason, you will need to remember to
surround the field name with brackets [] when referencing it in a query
run via ADO.


* Also, reserved keywords should be avoided:
http://www.aspfaq.com/show.asp?id=2080
--
Microsoft MVP -- ASP/ASP.NET
Please reply to the newsgroup. The email account listed in my From
header is my spam trap, so I don't check it very often. You will get a
quicker response by posting to the newsgroup.


 
Reply With Quote
 
Dave Anderson
Guest
Posts: n/a
 
      09-25-2006
McKirahan wrote:
> Don't know why a hyphenated field name fails.
>
> Try enclosing it in brackets -- as is needed for reserved words:
>
> RS2("[Metal-XS]").Value


That suggestion will definitely cause an error with the MSSQL OLE DB
provider. If the SELECT statement looks anything like this...

SELECT [Metal-XS] FROM ...

....then the correct way to read the value is:

RS2.Fields("Metal-XS").Value



--
Dave Anderson

Unsolicited commercial email will be read at a cost of $500 per message. Use
of this email address implies consent to these terms.


 
Reply With Quote
 
Dave Anderson
Guest
Posts: n/a
 
      09-25-2006
Bob Barrows [MVP] wrote:
> Nonstandard characters should definitely be avoided*, and
> if you have the opportunity to eliminate them, you should
> take it.


Why do you say that, Bob? For that matter, how do you define "nonstandard"?
According to this, there exist rules that dictate when delimiting is
required:

http://msdn.microsoft.com/library/en...on_03_6e9e.asp

But if delimited identifiers are acceptible to SQL Server, what demands that
they *definitely* be avoided?

There was a time when I might have said the same, but after the first time I
needed to deal with delimited identifiers (a vendor-supplied DB, of course),
it became -- for me -- a solved problem, and it only took a minute to
understand the concept. So what's the big deal?




--
Dave Anderson

Unsolicited commercial email will be read at a cost of $500 per message. Use
of this email address implies consent to these terms.


 
Reply With Quote
 
Bob Barrows [MVP]
Guest
Posts: n/a
 
      09-25-2006
Dave Anderson wrote:
> Bob Barrows [MVP] wrote:
>> Nonstandard characters should definitely be avoided*, and
>> if you have the opportunity to eliminate them, you should
>> take it.

>
> Why do you say that, Bob? For that matter, how do you define
> "nonstandard"?


This is defined in the article you cite below. See "Rules for Regular
Identifiers"

> According to this, there exist rules that dictate when
> delimiting is required:
>
> http://msdn.microsoft.com/library/en...on_03_6e9e.asp
>
> But if delimited identifiers are acceptible to SQL Server, what
> demands that they *definitely* be avoided?


I should have said "in my opinion" (but I'm definitely not alone in that
opinion). Just because the rdbms provides a way for those characters to
be handled does not mean one should make it handle them (not that this
is creating any kind of overhead for the dbms - I'm not saying that).

I hate having to remember to use the brackets in special cases so I
avoid creating situations requiring their use. If I used brackets for
all object names, regular and irregular, then it would not be such a big
deal for me, I admit.

>
> There was a time when I might have said the same, but after the first
> time I needed to deal with delimited identifiers (a vendor-supplied
> DB, of course), it became -- for me -- a solved problem, and it only
> took a minute to understand the concept. So what's the big deal?
>


Yes, I've had to deal with vendor-supplied and legacy databases, and
cursed the creators every time I had to type a delimiter. I like to use
RapidSQL, which has a nice code generator. Unfortunately, that code
generator does not delimit object names, so I wind up having to go in
and insert delimiters where necessary.



--
Microsoft MVP -- ASP/ASP.NET
Please reply to the newsgroup. The email account listed in my From
header is my spam trap, so I don't check it very often. You will get a
quicker response by posting to the newsgroup.


 
Reply With Quote
 
Aaron Bertrand [SQL Server MVP]
Guest
Posts: n/a
 
      09-25-2006
> But if delimited identifiers are acceptible to SQL Server, what demands
> that they *definitely* be avoided?


Because they are a P.I.T.A. to everyone who has to remember when to put
square brackets around a name.

Also, there are bugs in SQL Server, e.g. many of the internal procedures for
iterating through databases will fail if there is a dash in the name,
because the name is not always properly delimited. If Microsoft can forget
to bullet-proof code, so can the rest of us.

> There was a time when I might have said the same, but after the first time
> I needed to deal with delimited identifiers (a vendor-supplied DB, of
> course), it became -- for me -- a solved problem, and it only took a
> minute to understand the concept. So what's the big deal?


The range of expertise for accessing a database will vary -- maybe you are
very smart compared to the next guy who will work on your system. Why force
delimiters when you don't need to? This seems like putting kilometers
instead of miles on the speedometers of US-based vehicles because the math
is easy and everyone else in the world is using metric. While and having
grown up in Canada this wouldn't be a problem for me, I can certainly
envision the /*avoidable*/ chaos.

What makes the alternative (leaving the column name as is, and requiring
delimiters) so desirable?

A


 
Reply With Quote
 
Bob Barrows [MVP]
Guest
Posts: n/a
 
      09-25-2006
Bob Barrows [MVP] wrote:
> Dave Anderson wrote:
>> Bob Barrows [MVP] wrote:
>>> Nonstandard characters should definitely be avoided*, and
>>> if you have the opportunity to eliminate them, you should
>>> take it.

>>
>> Why do you say that, Bob? For that matter, how do you define
>> "nonstandard"?

>
> This is defined in the article you cite below. See "Rules for Regular
> Identifiers"
>


I should have said that I tend to define this standard a little more
strictly. I doubt you will find an object name containing anything but
aA-zZ in any database I create. I will use underscores, but not for
objects that will be used in sql statements (constraint names, idex
names, etc.)

But this is just my prejudice. I'm not sure what lead me in that
direction. Maybe it was the first time I had a VB function bomb due to
the absence of delimiters in a sql statement (back when I was using
dynamic sql).

--
Microsoft MVP -- ASP/ASP.NET
Please reply to the newsgroup. The email account listed in my From
header is my spam trap, so I don't check it very often. You will get a
quicker response by posting to the newsgroup.


 
Reply With Quote
 
Dave Anderson
Guest
Posts: n/a
 
      09-25-2006
Aaron Bertrand [SQL Server MVP] wrote:
> Also, there are bugs in SQL Server, e.g. many of the
> internal procedures for iterating through databases
> will fail if there is a dash in the name, because the
> name is not always properly delimited.


I did not know this. I was under the impression that SQL Server uses the
internal identifiers [id column in sysobjects] for internal processes.



> ...Why force delimiters when you don't need to?


I generally don't. But I wouldn't be afraid to use them if I felt there were
a good reason to do so. More to the point, I do not care when someone else
does, and I certainly wouldn't admonish them for doing so. In my opinion, it
is no different than dealing with case sensitivity in JScript or having to
Dim your variables with Option Explicit in VBScript.



> ...What makes the alternative (leaving the column name
> as is, and requiring delimiters) so desirable?


Well, that's a good question. Why would case sensitivity in JScript be
desirable when the alternative is "easier"? Why would
document.getElementById() be desirable when document.all[] is "easier"? Why
does Rice play Texas[1]?



[1] Kennedy's answer to his own rhetorical question is quite relevant here.

--
Dave Anderson

Unsolicited commercial email will be read at a cost of $500 per message. Use
of this email address implies consent to these terms.


 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Any way to get Soft Hyphen in JTextPane? KellyJ Java 0 07-07-2006 07:31 PM
Wep key with/without hyphen mcr Wireless Networking 0 12-07-2005 01:48 AM
hyphen in domain names Karl Computer Support 5 10-16-2004 08:04 PM
non-breakable hyphen Gilbert Saint-Flour HTML 2 05-17-2004 03:29 PM
hyphen vs minus in regex mm Perl 1 09-08-2003 08:27 PM



Advertisments