OLE DB Consumer Templates - Updating DB With DynamicAccessor
Feb 26, 2008
Hello,
I'd like to use OLE DB consumer templates, but I have troubles with changing values in my test DB. I've created a simple MS access DB 'ZK2Test.mdb' with one table 'pokus'. This table consist of one column with number (short integer).
I can read values, thats works fine. But when I try to write something, it is not propagated into DB.
I call SetValue and Update on cTable object and every call returns S_OK. When I try to read value of first row after my write, I get my new value of first column. But after moving cursor somewhere else and back to first row, reading first column of first row returns again the previous value.
In code example is my attempt to change value 1 from first row to 421
Sequence of commands is (C1 means Column 1):
// Open DB
res = DTSrc.Open (L"Microsoft.Jet.OLEDB.4.0", "..\ZK2Test.mdb");
CHECK_RES(res);
res = DTSession.Open(DTSrc);
CHECK_RES(res);
CDBPropSet propset(DBPROPSET_ROWSET);
propset.AddProperty(DBPROP_IRowsetUpdate, true);
propset.AddProperty(DBPROP_UPDATABILITY, DBPROPVAL_UP_CHANGE | DBPROPVAL_UP_INSERT | DBPROPVAL_UP_DELETE);
res = cTable.Open(DTSession, L"pokus", &propset);
CHECK_RES(res);
// Move to first row
res = cTable.MoveFirst();
CHECK_RES(res);
dataPtr = cTable.GetValue(1);
x = *((SHORT*)dataPtr);
// Now the value of x is 1
x = 421;
if (!cTable.SetValue(1, x)) {
return FALSE;
}
res = cTable.Update();
CHECK_RES(res);
dataPtr = cTable.GetValue(1);
x = *((SHORT*)dataPtr);
// Now the value of x is 421
// Move cursor to the second row and back
res = cTable.MoveNext();
res = cTable.MoveFirst();
dataPtr = cTable.GetValue(1);
x = *((SHORT*)dataPtr);
// Now the value of x is 1 (the original value, WHY!?)
Hello, I tried to use bookmarks in OLEDB consumer templates and I have problems with using MoveToBookmark. This method sets cursor position correctly on bookmarked row, but it seems to me it doesn't set the right cursor position in DB. When I call MovePrev after MoveToBookmark, I will not get previous row of the bookmarked row. Simplified Example - I get bookmark of the first row, then move to the 3th row. Call MoveToBookmark (current row is no the first row). But when I call MovePrev I'will not get DB_S_ENDOFROWSET but the second row:
MoveFirst() bk = GetBookmark() MoveNext() MoveNext() // Now I'm on third row MoveToBookmark(bk) GetData() - Now I get data from 1st row MovePrev() GetData() - Now I get data from the second row!!
All calls to OLEDB returs S_OK. Does somebody now, whats wrong?
We are using Reporting services 2005 and have been for some time. Recently we have started using the subscriptions as well. However we have come across a problem with this.
Currently we are updating our report templates by removing them and then creating them again. This worked fine until we started using subscriptions. Now, when the reports are removed, the subscriptions that are associated with the reports are also removed.
Is there a way to update a report template, without having to remove the report first? And can this be done programmatically? The code is currently publishing the reports by calling ReportingService2005.CreateReport(name, "/" + reportFolder, false, template, null);
I have a requirement to present computed sales order status value
Parent table : consumer Child table of consumer : sales order Child table of sales order: items
Items table has status column with awaiting, accepted , rejected.
Status of the sales order should be set as following If all items are rejected then sales order status=reject Or if at least one item is accepted then sales order status = accept Or if items status is awaiting then sales order status = pend
Query to find all sales order per consumer with computed order status for each sales order.
I just have a simple question that can hopefully answer whether I should dive too deeply into Reporting/Analysis Services. I'm looking to run some clustering algorithms on user-inputted keywords on objects within my database (please see http://flickr.com/photos/tags/friends/clusters/ for an example of what I'm talking about). It seems to me that the various reporting methods that SQL Server provides would be an ideal, quick and easy way of providing this for my SQL Server 2005 database.
Can the reporting services provide this type of functionality? And if so, would this be scalable? I would want to be able to access this clustered data in much the same way I do queries across my database and would want them to be done quickly and efficiently.
I am currently reading Ralph Kimball's "The Microsoft Data Warehouse Toolkit". In the book it mentions creating template packages to speed up the creation of future packages. In the book they also mention creating solutions and projects.
All sounds fair enough but I am confused a little.
Where should the template package be stored?! I created a Project and renamed the default package as "TemplatePackage". I setup some standard data sources and package variables. Do I now create a new package and place it in the same project? Or should my template package be deleted from the project?!
i hear of a feature called TEMPLATES where you can save the data thats entered into any particular Dynamics SL screen and paste the data in to the same screen at a later time (saves time if there is data that is constantly inputed into the same screen over and over). my question is, where are the templates saved at on the hard drive? and can it be opened/edited in notepad or something else if say we want to make changes to the data before pasting/loading it back?
I've created a new Stored Procedure template and saved it to .Microsoft SQL Server90ToolsShellTemplatesSqlStored Procedure. I can view (and use) the template via the Template Explorer, however, I want this new template to become my default template.
What do I mean by this? - I want to be able to right-click on stored procedures in my object explorer, click New Stored Procedure, and be forced to use my new template, rather than Create Procedure (New Menu).SQL.
I've got several templates that we use for creating stored procs and such and they all include a standard header for author and version information. One of the fields is the creation date. Is it possible to have the template automatically populate that field with the current date when a new file is generated from the template?
I just installed SQL2005 (and VS2005). When I run VSSQLCLRTemplates.vsi from the SQLCLR Project all the templates fail to install. It gives the error "Installation stopped because the directory for the ProjectType value did not exist. The project type is invalid for your installation of Visual Studio."
I do have a my documentsvisual studio 2005 directory. I am trying to start writting user defined aggregates. If I can install the templates manually, that'd be fine.
I'm currently working on a project that I'm having some design difficulties with and I was hoping that some of you could help me out. What I'm designing is sort of a webbased directory service based on different custom made templates. Imagine the yellow pages with different column requirements for each branch. Example:
I have designed a few tables that look like this: DECLARE @templates TABLE (TemplateID INT IDENTITY(1, 1), TemplateName VARCHAR(50)) DECLARE @attributes TABLE (AttributeID INT IDENTITY(1, 1), AttributeName VARCHAR(50)) DECLARE @template_attributes TABLE (TemplateID INT, AttributeID INT) DECLARE @values TABLE (ValueID INT IDENTITY(1, 1), TemplateID INT, AttributeID INT, Value VARCHAR(200))
INSERT INTO @templates SELECT 'Restaurant' UNION ALL SELECT 'DBAForHire'
INSERT INTO @attributes SELECT 'Name' UNION ALL SELECT 'Adress' UNION ALL SELECT 'TakeAway' UNION ALL SELECT 'YearsExperience'
INSERT INTO @template_attributes SELECT 1, 1 UNION ALL SELECT 1, 2 UNION ALL SELECT 1, 3 UNION ALL SELECT 2, 1 UNION ALL SELECT 2, 2 UNION ALL SELECT 2, 4
INSERT INTO @values SELECT 1, 1, 'Lumbagos TexMex' UNION ALL SELECT 1, 2, 'Mainstreet Oslo' UNION ALL SELECT 1, 3, 'Yes' UNION ALL SELECT 2, 1, 'Peso' UNION ALL SELECT 2, 2, 'Somewhere IN Sweden' UNION ALL SELECT 2, 4, '10'
SELECT TemplateName, AttributeName, Value FROM @templates a INNER JOIN @template_attributes b ON a.TemplateID = b.TemplateID INNER JOIN @attributes c ON b.AttributeID = c.AttributeID INNER JOIN @values d ON b.TemplateID = d.TemplateID AND c.AttributeID = d.AttributeIDThe problem I need help with is that with the current design all "Values" are defined as varchar(200)...is it possible to change the design so that it's equally flexible but also fasilitates different datatypes? In some cases I would like to have a description column with way more than 200 characters, and I'd also like to save numbers as actual numbers...not like my example above with "YearsExperience". Is it at all possible?? I would appreciate your insight on this...
-- Lumbago "Real programmers don't document, if it was hard to write it should be hard to understand"
I want to be able to create business intelligence project for reporting but the business intelligence project option is not there when I go to file/new/project.
When I first installed visual studio I chose visual basic/web development as the preference would this prevent other project types from being displayed?
I have a question regarding oledb templates in Visual Studio 2005. For some time I was trying to get through but I can't. Can anyone tell me how can I read the properties of the DataSource class being inside Rowset or Command class?
I mean: DataSource class is creating Session class. Session is creating Rowset or Command and so on.. But how can I read the INIT_DATASOURCE property of the DataSource class while for example a Command is called?
Could you give me a sample of code which retrieves the INIT_DATASOURCE property in the Execute method of the
CRowsetImpl class?
class ColedbRowset :
public CRowsetImpl< ColedbRowset, ColedbWindowsFile, ColedbCommand>
I have installed Visual Studio 2013 Express for Windows Desktop and Microsoft SQL Server Data Tools - Business Intelligence for Visual Studio 2013 yet there are no project templates for Analysis Services, Integration Services, and Reporting Services available when I attempt to create a new project.
Details of install are: Microsoft Visual Studio Express 2013 for Windows Desktop Version 12.0.40629.00 Update 5 Microsoft .NET Framework Version 4.5.51209 Installed Version: Desktop Express Team Explorer for Visual Studio 2013 06157-004-0441005-02546
Is there any way to change variable scope while using package templates?
I have created a package template that has several variables, a "typical" control flow and data flow. My goal was to try and use this as a starting point to create other packages within the same project and edit as required in the new package. I couldn't find any way (yet) to change scope of variables...these still show as belonging to the scope of package used to create the template.
I could not find The Reporting Service Project Template with Visual Studio 2008. It was available with Visual Studio 2005. How i can add the reporting service project into VS2008?
We are setting up developer machines with Visual Studio 2005 and SQL SERVER 2005 Client tools. My question is how do I get the templates for Integration Services into Visual Studio 2005 without installing BIDS?
I desperately need to setup the AD-HOC reporting on SQL server 2005. I think one of the templates that I need is in Business Intelligent Project Templets Reporting Model Template in Visual Studio Templates.
But I do not see it in there. Can some one please let me know where can I get the Reporting Model Template, or a link to where I can download or how to create it.
I have an application that uses SQL Report Builder to edit templates. When I go to add a dataset to add a custom field to the report, I get a permissions error (screenshot Error). When I check the credentials for the shared datasource, they are all grayed out, so I can’t verify the credentials being used (screenshot Error 2). According to SQL Management Studio, the user credentials have the right permissions. The weird thing is, I can access the datasets and shared datasource embedded in the report just fine. I just get a permissions error whenever trying to create a new dataset.
I am very new to SQL Server 2005. I have created a package to load data from a flat delimited file to a database table. The initial load has worked. However, in the future, I will have flat files used to update the table. Some of the records will need to be inserted and some will need to update existing rows. I am trying to do this from SSIS. However, I am very lost as to how to do this.
I am trying to make a stored procedure in my website for updating an address:1 CREATE PROCEDURE dbo.UPDATE 2 ( 3 @add NVarchar(50), 4 @cit NVarchar(50), 5 @state NVarchar(50), 6 @zip NVarchar(50), 7 @CNum int 8 ) 9 10 UPDATE table_name 11 AppAdd = @add, AppCity = @cit, AppState = @state, AppZip = @zip 12 WHERE CertNum = @CNum When I try to save it it give me an error: Incorrect syntax near keyword 'UPDATE'Must declare scalar variable '@add'
Hi, I'm new to ASP.Net quite new to C# (My first attempt at a database website) and am trying to get a button to add "1" to "int" value called "Comments" a each time its pressed basically counting each time a comment is added. I also only wnat it to affect the row where "ModID" in my database is equal to the query string "ModID" I'm using on the page. I cannot find any tutorials so this is my best guess so far. This is probably a Noobie type stupid question but I'm stuck. This is the code I have so far for my Button_Click event: protected void Button_Click(object sender, EventArgs e){ SqlDataSource CommentCountDataSource = new SqlDataSource(); CommentCountDataSource.ConnectionString = ConfigurationManager.ConnectionStrings["Main_Site_DatabaseConnectionString1"].ToString(); CommentCountDataSource.UpdateCommandType = SqlDataSourceCommandType.Text; CommentCountDataSource.SelectCommand = "SELECT (ModID, DateTimeLastComment, Comments) FROM Mods"; CommentCountDataSource.UpdateCommand = "UPDATE Mods SET (DateTimeLastComment=@DateTimeLastComment, Comments=@Comments) WHERE ModID=@ModID"; //How do i get the Where to use the query string info? CommentCountDataSource.UpdateParameters.Add("DateTimeLastComment", DateTime.Now.ToString()); CommentCountDataSource.UpdateParameters.Add("Comments", "10"); //"10" is just a value to test I'll change this to add "1" once I figure how. CommentCountDataSource.Update();} Sorry if I'm using the wrong lingo but as I say I'm new. If my code is a mile off then please can you send me in the right direction of some code that works.Thanks in advance if anyone can help me. Cheers,Alan
I am a DBA who is moving in the direction of minor database design. I have gone through the steps to get my tables normalized, and I am ready to get them set up so they will update from table to table. How do I set this up? I know SQL does not cascade like Access, so how is this done? From what I have read (Robert Vieira's book) I should use triggers? Any help would be appreciated. Dallas
strSQL = "UPDATE customers SET " strSQL &= "entryid = '" & strtheEntryid & " ' " strSQL &= "WHERE id =1 " right now in table id is my primary key field it increments by 1, I want to say get first record instead of saying id = 1, how to do that?
I have some code to hack in c#.. I have a database and when a form (C#) is loaded a copy of the table is made in a DataTable object. The form has a list box showing just the one column of info from the local DataTable. On the form it is possible to change a record, delete a record and add a record. These are all done in the local table.
The question, how do i send these changes back to the database. Currently it deletes the lot and copies all the local table values in. How do only do the affected row, UPDATE, INSERT etc
I have an ASP application that uses a stored procedure and ADO.net to update a sql server data file. The problem is I know the code is working, I don't have any errors with the ADO, no exceptions are caught. I can use the same basic code to insert a record using a different procedure. It is the update procedure that does not carry through.
So, I know I have a connection, the procedure works using the query builder directly so the procedure works, but when I run the code, I get no errors and no update to the datafile. I am not even sure how to trouble shoot this since I don't have an error to look up.
C# Code:-------------
private void UpdateIssue() { DateTime date = new DateTime(); date = Convert.ToDateTime(this.txtDate.Text);
//edit record in HelpDeskIssuesTbl here.
SqlConnection con = new SqlConnection("Data Source..."); SqlCommand comUpdateTicket = new SqlCommand("sp_UpdateHelpDeskIssues", con); comUpdateTicket.CommandType = CommandType.StoredProcedure; comUpdateTicket.Parameters.Add("@IssueID", this.GridView1.SelectedIndex.ToString()); comUpdateTicket.Parameters.Add("@EmpID", this.ddlEmployee.SelectedValue.ToString()); comUpdateTicket.Parameters.Add("@Date", date.ToShortDateString()); comUpdateTicket.Parameters.Add("@StatusID", this.ddlStatus.SelectedValue.ToString());
( @IssueID int, @EmpID int, @Date datetime, @StatusID int )
AS UPDATE HelpDeskIssuesTbl SET EmployeeID = @EmpID, IssueDate = @Date, IssueStatusID = @StatusID WHERE (IssueID = @IssueID) RETURN
Like I said the Stored Procedure does work when I run it directly in Visual Studio. I have double checked all the params and they all match up unless I am missing something.
My feeling with the SCD component is not that very solid. I have the feeling that the behavior of the insert/update strategy is not always correct an working. I will describe two problems that i encounter.
1. My destination table contains records with the value ''. Cause i don't want '' ( 2 single quotes) in our DWH i update the view that is the source with a case statement that changes the '' to NULL. But when i run the packages the '' values are not update with the NULL values. When i delete the destination table and run the package, the records are inserted with the NULL value as expected. Anyone who has experienced this problem?
2. When i create a new table and run the package so the destination table gets filled with records the SCD will insert alle records (for example 100). When i start the run directly after the first run, all records are updated instead of doing nothing what it should do cause all records exists.