|
If anybody could undertsand what you are a talking about, probably we could. SQL doesn't have combo boxes, so I guess you are looking to filter the data in your code somewhere.
Bob
Ashfield Consultants Ltd
|
|
|
|
|
Hi all,
I've developed an application that's using SQL Server for DB, now I want to create a setup and give it to users.
For the DB part, I have a simple '.mdf' file that is my DB and working with that like this:
sql_conn = new SqlConnection(@"AttachDBFilename=c:\test.mdf;Integrated Security=true");
then it's a simple connection, but I don't know how to use my DB in the user's computer, I should only copy the .mdf file in the user's computer? what's the exact steps to deploy a SQL DB related application?
I've searched the Internet and some eBooks + MSDN but didn't find anything about that.
Please answer soon, since I want that in a week.
Thanks in advance.
|
|
|
|
|
|
Thanks that was good,
but I'm using SQL Server 2005, how can I deploy the DB? What the user that wants to use my app should have so that my app can run properly? is the SQL Express should be installed? Please guide me on this!
|
|
|
|
|
Are you using SQL Server 2005 Express Edition or Compact Edition?
Express Edition needs to be installed before it can be used, but Compact Edition is basically working on .Net framework so if .Net framework is installed on the client you already have all the dll's.
If you're using Express Edition, this should help you forward: Embedding SQL Server Express into Custom Applications[^].
The need to optimize rises from a bad design.
My articles[ ^]
|
|
|
|
|
ADO.NET offers a great functionality which makes it very easy to implement databinding (two directional - read and write). Let`s assume that we have a DataSet with some simple DataTable tied with TableAdapter.
Here is what we have to do:
1) Create DataTable with the standard GetData method from the Adapter
2) Assign this datatable as binding source for our datagridview on UI
3) When user makes some changes in the datagridview, it is enough to call 'Update' method on the Adapter to transfer all changes into database.
This is very easy and fast to implement. However it does not work when our DataTable contains data from more than 1 physical tables from database (any joins in select clause).
Why is it impossible? The update method on tableAdapter does not generate at all. How to solve this?
Thank you very much for any help!
|
|
|
|
|
Haven't really used TableAdapter so I'm not able to say why it's not genereting all the methods (my guess is that the generator thinks that the view isn't updatable).
On the server side there are strict rules when the view can be updated:
- Any modifications, including UPDATE, INSERT, and DELETE statements, must reference columns from only one base table.
- The columns being modified in the view must directly reference the underlying data in the table columns. The columns cannot be derived in any other way, such as through the following:
- An aggregate function: AVG, COUNT, SUM, MIN, MAX, GROUPING, STDEV, STDEVP, VAR, and VARP.
- A computation. The column cannot be computed from an expression that uses other columns. Columns that are formed by using the set operators UNION, UNION ALL, CROSSJOIN, EXCEPT, and INTERSECT amount to a computation and are also not updatable.
- The columns being modified are not affected by GROUP BY, HAVING, or DISTINCT clauses.
- TOP is not used anywhere in the select_statement of the view together with the WITH CHECK OPTION clause.
So you may have to use VIEW_METADATA option on the view or INSTEAD OF triggers.
Hope this helps,
Mika
The need to optimize rises from a bad design.
My articles[ ^]
|
|
|
|
|
I guess the table adapter will have some UpdateCommand property that you need to manually set.
Hope that helps.
Regard,
Syed Mehroz Alam
My Blog
My Articles
Computers are incredibly fast, accurate, and stupid; humans are incredibly slow, inaccurate and brilliant; together they are powerful beyond imagination. - Albert Einstein
|
|
|
|
|
my question is that:
i have EMP table and also EMP_TRACK table.....suppose if im going to update EMP table the no.of rows gets effected should be stored in EMP_TRACK table.
that means EMP table simply contains columns EMPNO,ENAME.
whereas EMP_TRACK table contains columns DMLTYPE and NO_OF_ROWS_EFFECTED.
|
|
|
|
|
One way is to build a trigger on EMP and select count from inserted or deleted virtual tables.
Another way could be that you get the number of rows affected at client side and then insert it to emp_track.
One link that could be useful: Using the inserted and deleted Tables[^]
The need to optimize rises from a bad design.
My articles[ ^]
|
|
|
|
|
can't we use lik this:
create or replace trigger <name> after update on emp as
begin
if (sql%found) then
insert into emp_track values('update',sql%ROWCOUNT);
end;
But the problem is that SQL%ROWCOUNT is not returning any value........
From ur answer im able to understand that there r virtual inbuilt tables called inserted or deleted.....
so can we use directly SELECT COUNT(*) FROM INSERTED;
if so then if somebody is updating for the second time r the effected rows going to replace the existing rows of INSERTED TABLE. Hope u understood my problem....
Thanks for the answer..byee
|
|
|
|
|
Seems that you're using Oracle, correct?
If so, there's no virtual tables (inserted and deleted) in Oracle. Instead, you can use a trigger like you wrote.
The reason why sql%found isn't returning a value is that you are not executing any sql inside the trigger (sql&found is used for the last executed statement inside a pl/sql block).
Also the trigger is executed only once per statement. One way to handle this is that you modify the trigger to fire every time row is updated. So basically your trigger could look like this:
create or replace trigger emp_dml_counter
after update on emp
for each row
as
begin
insert into emp_track values('update',1);
end;
If you want to combine different statement types (insert, update and delete) to the same trigger, you can use :NEW and :OLD variables to check if the row is new, updated or deleted.
This is now Oracle specific so these suggestions won't work in SQL Server. You we're using Oracle?
Mika
The need to optimize rises from a bad design.
My articles[ ^]
|
|
|
|
|
im using sqlplus ....can i get the result if i use ur code????
and one more thing in the line....
insert into emp_track values('update',1);
emans that only 1 row got effected so value 1 is inserted wat is the case if more than 1 row is updated....
i mean that how can the data in EMP_TRACK be ('UPDATE',5) ??
|
|
|
|
|
When you specify FOR EACH ROW in a trigger it means that the trigger is fired for every row that is modified. For example if a single statement modifies 5 rows then this trigger is executed 5 times. That's why I used number 1 in the statement.
Have a try with the trigger I modified. It may contain typos, but you'll get the idea when you create the trigger and then update the emp-table.
The need to optimize rises from a bad design.
My articles[ ^]
|
|
|
|
|
ya i tried the trigger ur given lik
create trigger trg_emp after update on emp
for each row
begin
insert into emp_track values('update',1);
end;
the problem im facing is that suppose if i update 5 rows in EMP table
then the command line -----INSERT INTO EMP_TRACK VALUES('UPDATE',1)----- is going to fire for 5 times thereby inserting (UPDATE,1) for 5 times.
can u suggest some method for inserting ('update',5) at once
because i hav already tried all possible solutions still not gettin gthe right solution....
Thanks in advance
|
|
|
|
|
That's exactly the behaviour I explained. I don't recall that there is any (easy) way to find out how many row are affected by a single statement from inside a trigger.
If you're just cumulating count on different DML types, the easiest way is to add one row to emp_track table before you start using the trigger. For example:
INSERT INTO Emp_Track (DmlType, DmlCount) VALUES ('UPDATE', 0);
INSERT INTO Emp_Track (DmlType, DmlCount) VALUES ('INSERT', 0);
...
This will give you the starting point for logging. After that you don't use INSERT in the trigger, but UPDATE instead. Like:
CREATE TRIGGER trg_Emp
AFTER UPDATE ON Emp
FOR EACH ROW
BEGIN
UPDATE Emp_Track
SET DmlCount = DmlCount + 1
WHERE DmlType = 'UPDATE';
END;
This will start cumulating update counts on Emp_Track (as long as the seed row exists).
The basic question is, what data you want to get while tracking DML. If you need for example date information, when the modification was done, you would make a slightly different trigger where you test if the record for today already exists or not (for example try to update it) and so on. The trigger would be something like:
CREATE TRIGGER trg_Emp
AFTER UPDATE ON Emp
FOR EACH ROW
BEGIN
UPDATE Emp_Track
SET DmlCount = DmlCount + 1
WHERE DmlType = 'UPDATE'
AND DmlTime = SYSDATE;
--
IF SQL%ROWCOUNT = 0 THEN
INSERT INTO Emp_Track (DmlType, DmlCount, DmlTime)
VALUES ('UPDATE', 1, SYSDATE);
END IF;
END;
The need to optimize rises from a bad design.
My articles[ ^]
|
|
|
|
|
Hi all,
I am trying to select values from a table to display them next to each other instead of underneath each other.
Here is my attempt:
SELECT A.Owner, A.Amount, B.Amount<br />
FROM Payment_History A<br />
JOIN Payment_History B<br />
ON A.Owner = B.Owner<br />
AND A.Number <> B.Number<br />
WHERE A.Owner = 49622
I have been google-ing it for a while now but so far this is my best attempt.
The problem however is that the return twice (there are only two record for this member but some might have up to 15) like this:
<br />
Owner Amount Amount<br />
49622 11585.678 23143.57<br />
49622 23143.57 11585.678
Please help my get the values to look like this
<br />
Owner Amount Amount<br />
49622 11585.678 23143.57
Only once like this...
Thank you in advance...
"Many of life's failures are people who did not realize how close they were to success when they gave up." Thomas A. Edison
|
|
|
|
|
Since in your query you have no joining between the tables, you'll get cartesian product.
If I understood you correctly, you want 15 columns, but a single row if owner has 15 rows. If this is correct, have a look at PIVOT[^] queries.
The need to optimize rises from a bad design.
My articles[ ^]
|
|
|
|
|
thank you... i will look into it.
"Many of life's failures are people who did not realize how close they were to success when they gave up." Thomas A. Edison
|
|
|
|
|
Hi everyone,
I am creating a table to represent sporting results and so far have the following columns:
---------------------------------------------------------------
game_ID date home_ID away_ID home_score away_score
---------------------------------------------------------------
I have added an integrity check to ensure that home != away, as well as a 'unique' statement with (date, home) and (date, away), however this will still allow the same team to play two games on the same date; one home and one away.
Is there a way to build a table so that no team can play two games on the same date or do I need to check this myself whenever I insert a new result?
|
|
|
|
|
JenovaProject wrote: Is there a way to build a table so that no team can play two games on the same date
Add either unique constraint or unique index on those columns (single constraint with two fields). Just make sure that the time portion in the date is the same.
Something like:
ALTER TABLE XYZ ADD CONSTRAINT UK_SingleGame UNIQUE (date, home_id);
Then if you want you can create a similar constraint for date and away_id.
The need to optimize rises from a bad design.
My articles[ ^]
modified on Saturday, November 8, 2008 2:58 AM
|
|
|
|
|
Hi ALL,
I have three table named Members (ID ,Name,Age),Interest(IntID,IntFrom,ID-refers Members)I want to create a Query Which fetches all the Interests expressed by a particular Member.
can anybody help me
Thanks A Lot
|
|
|
|
|
Three tables?
select
[name],
intFrom
from
members m
join interest i
on m.id = i.id
|
|
|
|
|
Select members.*,Interest.*<br />
from members,Interest<br />
where members.id=Interest.id
I Love T-SQL
"Don't torture yourself,let the life to do it for you."
If my post helps you kindly save my time by voting my post.
|
|
|
|
|
hi Guys , i need your Help again. i have the Following query
SELECT IDENTITY(int, 1,1) AS REC_NO,
LIS_KEY,
FUNC_KEY,
UNIT_NO,
RIGHTS_ZONING,
USE_CODE,
[OWNER],
RATEABILITY,
EXCLUSION,
MARKET_VALUE,
EFFECTIVE_DATE,
CATEGORY_CODE,
SUPPLE_NUM,
AREA,
PROPERTY_ID,
OLD_MARKET_VALUE,
VALUATION_ID,
NOTIFICATION_ID,
REASON,
SORT_DATE
INTO SDE.EXPORT_OITPS_GV_SUPP_RECON
FROM
(
SELECT DISTINCT TOP 100 PERCENT P.LIS_KEY,
CASE LEN(FUNC_KEY)
WHEN 8 THEN SUBSTRING(FUNC_KEY, 1, 5) + '0' + SUBSTRING(FUNC_KEY, 6, 3)
ELSE FUNC_KEY
END AS FUNC_KEY,
CASE LEN(FUNC_KEY)
WHEN 8 THEN SUBSTRING(FUNC_KEY,5,1)+ '0' + SUBSTRING(FUNC_KEY, 6, 4)
ELSE SUBSTRING(FUNC_KEY,5, 5)
End AS UNIT_NO,
SUBSTRING(NEW_ATTRIB_CODE, 1, 2) AS RIGHTS_ZONING,
SUBSTRING(NEW_ATTRIB_CODE, 3, 2) AS USE_CODE,
ISNULL(P.OWN_NAME, '') AS OWNER,
CASE SUBSTRING(NEW_ATTRIB_CODE, 7, 1)
WHEN '1' THEN 'R'
WHEN '4' THEN 'E'
ELSE 'N'
END AS RATEABILITY,
CASE
WHEN P.PROP_CATEGORY_ID = '2' THEN 'RES'
WHEN P.PROP_CATEGORY_ID = '4' THEN 'PSI'
WHEN SUBSTRING(V.NEW_ATTRIB_CODE, 7, 2) = '41' OR SUBSTRING(V.NEW_ATTRIB_CODE, 7, 2) = '42' THEN 'REL'
ELSE ' '
END AS EXCLUSION,
CONVERT(FLOAT,V.NEW_IMPROVED_VALUE) AS [MARKET_VALUE],
(
CASE WHEN CONVERT(VARCHAR,DATEPART(DD, EFFECTIVE_DATE)) < 10
THEN '0' + CONVERT(VARCHAR,DATEPART(DD, EFFECTIVE_DATE))
ELSE CONVERT(VARCHAR,DATEPART(DD, EFFECTIVE_DATE))
END +
CASE WHEN CONVERT(VARCHAR,DATEPART(MM, EFFECTIVE_DATE)) < 10
THEN '0' + CONVERT(VARCHAR,DATEPART(MM, EFFECTIVE_DATE))
ELSE CONVERT(VARCHAR,DATEPART(MM, EFFECTIVE_DATE))
END +
CONVERT(VARCHAR, DATEPART(YYYY, EFFECTIVE_DATE))
) AS EFFECTIVE_DATE,
SUBSTRING(V.NEW_ATTRIB_CODE,7,2) AS CATEGORY_CODE,
'S' + CONVERT(VARCHAR, SUPPL_YEAR) + '/' + CONVERT(VARCHAR, SUPPL_NO) AS SUPPLE_NUM,
CONVERT(INT, ISNULL(P.ACTUAL_EXTENT, 0)) AS AREA,
P.PROPERTY_ID,
CONVERT(INT, ISNULL(P.IMPROVED_VALUE, -1)) AS OLD_MARKET_VALUE,
V.VALUATION_ID,
0 AS NOTIFICATION_ID,
LU_V.VAL_REASON AS REASON,
V.STATUS_DATE AS SORT_DATE
FROM SDE.PROPERTY_SUMMARY P
LEFT JOIN SDE.AUTHORITY A
ON A.AUTHORITY_ID = P.AUTHORITY_ID
INNER JOIN sde.VALUATION V
ON P.PROPERTY_ID = V.PROPERTY_ID
LEFT JOIN (SELECT GISCODE, MIN(OWN_NAME) AS OWN_NAME
FROM SDE.VW_PROPERTY_DEED
GROUP BY GISCODE) D
ON P.LIS_KEY = D.GISCODE
LEFT JOIN SDE.LU_VAL_REASON LU_V
ON V.VAL_REASON_ID = LU_V.VAL_REASON_ID
WHERE
V.ARCHIVE_DATE IS NULL
AND V.ARCHIVE_DATE IS NULL
AND V.NEW_ATTRIB_CODE IS NOT NULL
AND V.EFFECTIVE_DATE = '2008/01/07'
AND V.NEW_ATTRIB_CODE <> '0009000900'
ORDER BY SORT_DATE
) TMP
and i get the Following Error
Msg 232, Level 16, State 3, Line 6<br />
Arithmetic overflow error for type int, value = 3886000000.000000.<br />
The statement has been terminated.
Thank you
Vuyiswa Maseko,
Sorrow is Better than Laughter, it may Sadden your Face, but It sharpens your Understanding
VB.NET/SQL7/2000/2005
http://vuyiswamb.007ihost.com
http://Ecadre.007ihost.com
vuyiswam@tshwane.gov.za
|
|
|
|
|