|
David - this approach works fine, thanks a lot!
|
|
|
|
|
I'm not sure how you handle queries in Access spit but I would replace DELETE with Select Count(*) and execute the select query, use the results to hassle the user and then delete the data.
BTW I cannot imagine giving a user the ability to write and execute sql code against the database, advanced or not. The mere fact that you want to get confirmation from your user supports my horror.
Never underestimate the power of human stupidity
RAH
|
|
|
|
|
I know what you mean about user access to SQL - but the support benefits of having this are considerable (not least because it means I don't have to write GUI code for every table blah blah).
Still, it'll probably end up hidden behind a secret key combination know only to the enlightened few. Or something like that!
|
|
|
|
|
Do yourself a favor and create a CYA (cover your ass) log table which would capture the SQL statement, User, DateTimeStamp. This will also come in handy when you get the call, "The data was there on Friday !"
Also, take frequent backups.
|
|
|
|
|
David Mujica wrote: a CYA (cover your ass) log table
+5, but wouldn't you rather have a lightweight trace that keeps track of this stuff?
David Mujica wrote: Also, take frequent backups
--edit
Aw, Microsoft Access, not Sql Server! Forget the trace
I are Troll
modified on Thursday, September 30, 2010 1:03 PM
|
|
|
|
|
Logging is probably a good idea. My GUI already makes automatic backups
|
|
|
|
|
hello guys...im new to this. I have installed Visual Studio 2008 and SQL Server it, now I wanna use sql server management studio with it but on startup, it asks for server name. How can I get that server name. Moreover, should I use sql server authentication or windows authentivation? thnx
|
|
|
|
|
If you have installed a default instance, any of this should work - . (a dot indicating the local instance) or your-machine-name or your-machine-name\MSSQLSERVER
If you have installed a named instance, you need to enter that named instance.
Simply, you could find a list of all local servers installed by doing this:
* Click on the "Server name:" drop down
* Select "<Browse for more...>"
* Select "Local Servers" tab
* Expand "Database Engine"
* Here the instances are listed, choose 1 of them
Regarding the type of login, it depends on how you installed your ms sql server, if you installed with windows authentication choose that. If you installed with mixed mode, you should be remembering the sa password you supplied at the time of installation. So choose "SQL server authentication" in "Authentication:" and enter the user name as "sa" and the password you chose
Hope this helps...
Cheers,
Karthik
|
|
|
|
|
Karthik. A wrote: Simply, you could find a list of all local servers installed by doing this:
* Click on the "Server name:" drop down
* Select ""
* Select "Local Servers" tab
* Expand "Database Engine"
* Here the instances are listed, choose 1 of them
thnx....this method worked.
|
|
|
|
|
Great! you are welcome!
Cheers,
Karthik
|
|
|
|
|
So up vote the answer in appreciation!
Never underestimate the power of human stupidity
RAH
|
|
|
|
|
Hi,
How can i modify the locked stored Procedure.
I have create stored procedure from C# Sql Projects (clr) and now its Locked and i cant modify it.
|
|
|
|
|
Can you clarify 'locked' is it encrypted, is it read only is you source control stopping you from checking it out.
Never having used the CLR to create a stored proc we need more info to help.
Never underestimate the power of human stupidity
RAH
|
|
|
|
|
I have two sql tables with the following layout:
Table: Calls
ID - int, PK
ReportGroupID - int, FK -> ReportGroups.ID
Name - nvarchar(50)
PhoneNumber - nvarchar(50)
(other data items)
Table: ReportGroups
ID - int, PK
ReportGroupName - nvarchar(50)
I'm developing in C#, VS 2008. The windows forms interface has the following elements:
listbox - lists the Data in Calls.PhoneNumber
- I have this data bound to a dataset that has this data.
form controls - when a user selects an entry in the listbox, the data is displayed in these controls.
- Fairly straightforward data binding.
report groups combo box - this combo box will display the ReportGroupName based on the Calls.ReportGroupID of the selected item in the listbox.
- HELP!!
I managed to get this working to some degree at one point, but saving the data did not work - despite the dataset being persisted between changing of records. Here's what I really want help with:
1) I have not been able to find a good resource that goes in depth into the whole Dataset->DataAdapter->TableAdapter->TableAdapterManager relationship. Any pointers in the right direction either online or printed would be great. I feel like I'm just on the cusp of getting the right information out.
2) If there is a specific and simple way I am missing the implementation of this sort of behavior by using the Visual Studio designers, it would really help things along on my end.
Thanks!
|
|
|
|
|
patzerFish wrote: Dataset->DataAdapter->TableAdapter->TableAdapterManager relationship
Here, I believe, lies the cause of your problem. Once you start relying on the Adapter s you are screwed, they are sufficient for simplistic solutions and most devs abandon them fairly early in their career.
Move to a properly implemented DAL (or even better build one). A simple one is fairly easy and should only take a couple of days, you need the CRUD methods that service DATATABLES only, rarely should you be loading a dataset (implies multiple tables returned) from a procedure.
Now you have your data in nice easy to use datatables or List<> you need to use BindingSource as the datasource for your controls, this will give you greater control over your UI.
Note: This is a personal opinion, however I have been using this design successfully for many years.
Never underestimate the power of human stupidity
RAH
|
|
|
|
|
|
Thank you.
I'm a little tired of repeatedly stamping on these bloody adapters, I'm tempted to write and article/rant just so I can link to it as a response to this type of issue.
Never underestimate the power of human stupidity
RAH
|
|
|
|
|
Hi Mycroft,
I wish someone did, I mean an article, not a rant. And I wouldn't mind at all if you were the one.
I would suggest a simple application with one or two DataGridViews showing some query results, and an add/edit mechanism with one or two Forms so one can add/modify the DB and see the results. These questions are indeed popping up all the time. How about a small company with employees and some company cars?
I would do it myself, however I lack DB experience and authority.
I am willing to contribute as a proofreader, I'll sure come up with some basic why&how questions.
|
|
|
|
|
I actually have a small app that is part of my 'framework' love that word that reads the data structure. I could expand on that I suppose.
My problem is that I know nothing about the adaptors and to be of any value the article should be able to highlight the shortcomings of them rather than just say this is the way you should do it.
I think Dave Kreskowiak may be the person to go to for this, he seems to know an awfull lot about the adapters.
Never underestimate the power of human stupidity
RAH
|
|
|
|
|
I see your point. If adapters are irresistible but not really the right approach, it deserves explaining. But even then, the right way is what is most important. Let's see how others may react on this.
|
|
|
|
|
How about a partnership - you and Dave - to write about the pros and cons of each approach?
Will Rogers never met me.
|
|
|
|
|
I think I will start something and then ask Dave to contribute - I will take this to the correct forum.
Never underestimate the power of human stupidity
RAH
|
|
|
|
|
Cool! I'll be looking forward to seeing the result. I've learned a bunch from both of you, and appreciate your clear, informative presentation style. I expect it will be a great article!
Will Rogers never met me.
|
|
|
|
|
I am a firm believer in not passing datasets (or recordsets) around as universal data objects. I create objects that represent the real-world object, and aggregations of those objects where it makes sense. Those objects may span more than one table, the the consumers of my objects have no knowledge of a database.
For aggregation objects, I create a class that inherits from CollectionBase. That allows me to add a class within the aggregation class that inherits from IComparer so I can provide sorting capabilities. The aggregation class contains the code to handle CRUD, and to allow specifying a filter for querying.
The class that is used for the objects (the item class) collected by the aggregation class inherits from IDataObjectBase. The item class has code to validate, indicate if any values have been changed, etc.
That allows me to use both the aggregation class and the item class for objects that easily bind and can be found in VS's Data Source Explorer.
In a few cases, where I need hierarchical objects, an aggregation class can also be a property within an item class.
Yes, it takes more coding than passing around datasets, but it is more durable. Besides, once you have the first one coded the way you want, you can use it as a template for others, which reduces the coding time.
|
|
|
|
|
You use a more advanced structure than I do as I use a List<> when coding for the web and datatable for winforms (I like the datagridviews native sorting support for datatable).
You should do an article on your structure, I'd be interested in seeing it as I am always open to new and better ideas.
Never underestimate the power of human stupidity
RAH
|
|
|
|