|
Mazdak wrote:
you can use if you want.
That's what I mean...it's just a bunch of extra typing for nothing...
RageInTheMachine9532
|
|
|
|
|
This is a very inflexible solution. Why not just use forms authentication? It's really easy to use. You simply put an authentication[^] section in your application's root Web.config file. You can add the credentials - even using plain-text passwords - right there in the file and forego having to implement a database or other data source for credentials. Then add an authorization[^] section for each location (either in your root's Web.config or in sub-directories' Web.config files) for directories you want to protect.
Then just read about the FormsAuthentication[^] class for a simple example of a page to gather credentials and the code to create the authentication token, which is an encrypted token (read: secure - much more than sessions).
This gives you the flexibility to support different data sources for credentials. And even if one day you change the username and/or password, with your approach you'd have to recompile for something so trivial. Even which putting this in the Web.config file you can change it easily without having to do anything else (the change would case the web application to restart but that's transparent).
If you want to add role-based authorization, see my article, Role-Based Security with Forms Authentication[^].
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
I'm creating a data-driven Windows Form dialog which has two combo boxes both of which are lookups to the same table: one is HomeNationID , the other CurrentNationID looking up the Nation (NationID, Description) table.
I have set both combos to have their DataSource as my Nation table with DisplayMember as Nation.Description and ValueMember as Nation.NationID .
When I Show the form I get a runtime error Error creating window handle. (an OutOfMemoryException ), it's InnerException is Object reference not set to an instance of an object., the stack trace goes back through ComboBox.SetItemsCore , ListControl.DataManager_ItemChanged and Forms.Control.UpdateBindings (with some others in between).
I can't add the Nation table a second time to the DataSet (not allowed two tables with the same name).
This doesn't seem like a particularly odd requirement - two combos with the same lookup table.
PeteB
I wouldn't say "he's not the sharpest knife",
I'd say "he's a spoon."
|
|
|
|
|
Only use "Description" and "NationID" as the DataMember value, not "Nation." prepended to them. See the documentation and the example for the ListControl.DataSource property (which ComboBox inherits) foro more information.
Also, if you want to better understand why, read about the CurrencyManager .
You can have two combos with the same lookup table, though. One problem you might have that I've seen a few times is that since binding is a two-way deal, changing the value of one combobox will change the other. If this happens, simply use DataTable.Clone to get another DataTable to bind to.
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
Actually, the combo boxes work perfectly on their own, there is only a problem if they both link to the same lookup DataTable. The problem is that of sharing the DataTable. I was hoping that there was a more elegant solution than cloning the DataTable but if that's the only way...
Thanks
PeteB
I wouldn't say "he's not the sharpest knife",
I'd say "he's a spoon."
|
|
|
|
|
Pete Burgess wrote:
...there is only a problem if they both link to the same lookup DataTable.
That's what I was describing, which is why I said you have to clone the DataTable .
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
How can I get the name of the user who started the app?
Thanks.
Nilson
|
|
|
|
|
Environment.UserName
Mazy
"Man is different from animals in that he speculates, a high risk activity." - Edward Hoagland
|
|
|
|
|
Thank you very much.
Nilson
|
|
|
|
|
Hi all.
I am designing a C# project which has so much to do with databases. Up to now , I didn't have much experience about multiuser apps.
Which database (Access , SQLServer, NOT Oracle ....) should I use for a "multiuser & high-frequency accessed & middle mass" data record?
Any proverb or url is welcome. (A comparison schema you know?)
Utku KAYA
|
|
|
|
|
Access is not for multiuser usage, its a desktop database. You should use SQLServer .(Of course I didn't talk about price & licening)
Mazy
"Man is different from animals in that he speculates, a high risk activity." - Edward Hoagland
|
|
|
|
|
Access can be used for workgroups, but it isn't optimized for such and can be much slower since it is file-based.
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
SQL Server has specialized support in the .NET Framework and has since 1.0. Oracle does not as well starting with 1.1 (there was a separate install before, but it wasn't officially supported).
Price is definitely a concern with both. Like Mazdak said, though - Access is not optimized for multi-user environments. It's also file-based, and any file-based database solution has major cons.
One nice thing about SQL Server, though, is that they have a freely downloadable and distributable desktop engine called MSDE. For all intents and purposes, it is SQL Server. It doesn't support near as many connections (only 10) but supports everything else from transations to backups.
You can find more information about it at http://www.microsoft.com/sql/msde[^]. If you installed the defaults for VS.NET, you'll also have the setup on your machine already in the Setup\MSDE directory of your VS.NET installation root. Having applications like VS.NET, FoxPro (last I checked many years ago), Access, Office, and few others gives you redistributable rights to MSDE. Check it out.
The really nice thing is that if you ever need to upgrade to the full SQL Server solution, just re-use the same MDF and LDF files from MSDE. Like I said, for all intents and purposes MSDE and SQL Server are the same.
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
iam developing application that get binary data from the database(.doc)files and iam storing these file in local files while dealling with it and after i finish i call
System.IO.File.Delete(myfile);
but most of the time the file doesn't delete
so if any one know granteed way to delete my temp files
|
|
|
|
|
Files cannot be deleted while they're kept open.
Are you sure that you close all stream which accessed the file, before trying to delete it?
|
|
|
|
|
i do not make streams with these files
these files r doc files and i have activex control on my form opens these files
and when the user exits the application these files must be deleted.
|
|
|
|
|
Then your ActiveX controls MUST close the files before the app exists. There must be some way of telling the ActiveX control to close it's files. If not, you're going to have to come up with some kind of shell around your entire app that waits for your app to close, then deletes the files...
RageInTheMachine9532
|
|
|
|
|
The ActiveX control would most likely close the file handles while being disposed, so making sure the temp files are deleted after the ActiveX control is disposed would help.
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
Heath Stewart wrote:
The ActiveX control would most likely close the file handles
You said it yourself! most likely, but not guaranteed...
I say this because I've seen some crappy ActiveX controls come out of Novell that didn't clean themselves up properly.
RageInTheMachine9532
|
|
|
|
|
He seems to be using the Office ActiveX controls which would close the file handles. Like you said, though, there are crappy ones out there that don't. From Novell I don't doubt that!
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
Heath Stewart wrote:
From Novell I don't doubt that!
You sound like you speak from experience?
RageInTheMachine9532
|
|
|
|
|
With their networking protocols and the like, yes. I just don't like them and with Active Directory and *nix-based networks dominating the market, I can't believe Novell is still around. I guess they think that clinging to open-source will save them. Nothing like jumping on the bandwagon...until it falls off a cliff! Bwahahahaha!
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
On top of all that, it still needs a DOS partition to boot and still relies on 16-bit code in it's kernel.
Won't be fixed until NetWare 8 with a complete rewrite of the kernel, if the company survives that long...
RageInTheMachine9532
|
|
|
|
|
Hello
I have to read an excel sheet from asp.net using C#.i do hold a code minus using the Excel Object.
This is my code..
What i need to know from the following code is that The Sheet1$ which i am querying from need not go always under the name Sheet1$.i need to find a way to read the Excel Sheet Tab Names instead of referring them by hardcoding as Sheet1$
Kindly advise.itz very urgent.
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " + Server.MapPath("./") + "\\uploadedfiles\\Fortek CIS1.xls;Extended Properties=Excel 8.0;";
System.Data.OleDb.OleDbDataAdapter myData=new System.Data.OleDb.OleDbDataAdapter("SELECT * FROM [Sheet1$]", strConn);
myData.TableMappings.Add("Table", "Fortek CIS1");
DataSet myDataset=new DataSet();
myData.Fill(myDataset);
int j=0;
while (myDataset.Tables[0].Rows.Count>0)
{
if (j==43)
break;
Response.Write(myDataset.Tables[0].Rows[j+1]["name"] + "---------");
Response.Write(myDataset.Tables[0].Rows[j+1]["dept"] + " ");
j=j+1;
}
|
|
|
|
|
You'll have to use the Microsoft Office PIAs (Primary Interop Assemblies). If you are using Office 2002 (XP), you can download them from http://www.microsoft.com/downloads/details.aspx?FamilyId=C41BD61E-3060-4F71-A6B4-01FEBA508E52&displaylang=en[^]. If you're using Office 2003 Professional or Developer you can get these from the CD. They are not downloadable unless you're an MSDN Subscriber, though. In that case, however, you can actually use the XP PIAs because the supported interfaces are backwards compatible, at least for the functionality you need.
In your code, create a new instance of the ApplicationClass and use ApplicationClass.Workbooks.Open to open your file. You can then enumerate the Sheets property to get the name. Make sure to close the workbook and call ApplicationClass.Quit when done. If you design an effective caching system, you could save yourself a big performance hit by remembering which files have which worksheets if you know they won't change.
Microsoft MVP, Visual C#
My Articles
|
|
|
|