.:: Jasa Membuat Aplikasi Website,Desktop,Android Order Now..!! | | Order Now..!! Jasa Membuat Project Arduino,Robotic,Print 3D ::.

Exchange server 2007 online backup in windows server 2008

0 komentar

Exchange server 2007 online backup in windows server 2008



Use windows server 2003 ntbackup utitlity for taking online backup of exchange server 2007 in windows server 2008



I installed MS Exchange server 2007 on a windows server 2008 environment and combination of both worked pretty good. But as a non written rule every good thing holds a bad thing in it. So what this combination of Windows server 2008 and Exchange server 2007 does.



In Windows server 2008 it�s not possible to take online backup of Exchange server 2007 because windows server 2008 doesn�t support online backup of exchange server 2007.



I was felling lot of pain because of this online backup unavailability because it generates lot of logs that make my server�s hard disk full and it stops my exchange server to work. For Deleting log my friend created a utility that could delete all the logs easily on daily basis. You can get more detail for this utility from here or you can it discuss about it here.



We created that utility but I was not happy with that so I looked for some other solution and I found it.

I saw that in windows vista we do not have the hyper terminal but we can use that by copying the necessary file from XP. I tried the same thing for windows server 2008 also and looked for Windows NT backup files and that worked. For more about hyperterminal in vista visit my previous post here



Exchange server 2007 work on windows server 2003 so Windows NT backup can take the online backup of exchange server 2007. When you run windows NTbackup.exe in windows server 2008 it render all the information of exchange server 2007 and it can take online backup of exchange server 2007 in windows server 2008. Its backup is as simple as you used to do in windows server 2003.



Only thing that we need to take as precaution is that for a 64 bit OS we should use a 64 bit server 2003 file and for a 32 bit OS we should use 32 bit server 2003 files.



If you have any problem in using ntbackup utility in windows server 2008 you can discus that on my website www.techraga.com forum here.



For making your life easy I extracted the files of NT backup and uploaded it. you can download it from here with your respected version.



For 64Bit version of windows server download from here

For 32 bit version of windows server download it from here



Password for both the zip file is www.techraga.com



I hope it was useful for you and you liked it.

Thanks for being here

Suni

Download Matlab

0 komentar

Matlab 2007b Portable | 1.2 GB


http://www.qshare.com/get/153137/r2007b.part01.rar.html
http://www.qshare.com/get/153761/r2007b.part02.rar.html
http://www.qshare.com/get/153762/r2007b.part03.rar.html
http://www.qshare.com/get/153765/r2007b.part04.rar.html
http://www.qshare.com/get/160968/r2007b.part05.rar.html
http://www.qshare.com/get/160970/r2007b.part06.rar.html
http://www.qshare.com/get/161283/r2007b.part07.rar.html
http://www.qshare.com/get/161285/r2007b.part08.rar.html
http://www.qshare.com/get/161284/r2007b.part09.rar.html
http://www.qshare.com/get/161317/r2007b.part10.rar.html
http://www.qshare.com/get/161318/r2007b.part11.rar.html
http://www.qshare.com/get/161440/r2007b.part12.rar.html
http://www.qshare.com/get/161442/r2007b.part13.rar.html
http://www.qshare.com/get/161429/r2007b.part14.rar.html

Pass : student



Alternative Download :


http://depositfiles.com/files/6060407
http://depositfiles.com/files/6060436
http://depositfiles.com/files/6060469
http://depositfiles.com/files/6060516
http://depositfiles.com/files/6060540
http://depositfiles.com/files/6060591
http://depositfiles.com/files/6060898
http://depositfiles.com/files/6061684
http://depositfiles.com/files/6064588
http://depositfiles.com/files/6064750
http://depositfiles.com/files/6064780
http://depositfiles.com/files/6064804
http://depositfiles.com/files/6065038
http://depositfiles.com/files/6065185
http://depositfiles.com/files/6065200
http://depositfiles.com/files/6065419
Suni

Download Mobile Player

0 komentar

The Best Player For Your Mobile

1. Core Player v1.1

2. divx player 0.88

3. lcg jukebox 2.18

4. mp3 dictaphone 4.0

5. Mp3 Player v3.60

6. smart movie 3.41




Note :

All Nokia 2nd edition & 3rd Edition player

more..........3250,N80,N92,N93,N72,N73,E61,N95,N81.... more..... etc

New and Hot software works as a Great Audio and Video Player. It supports Mp3,Ogg,Wav,Wma,Aac,Amr,Mp4,midi,mka

Video Formats: Mpeg-1,Mpeg-4,Divx,Xivd,Mpeg,H.264AVC



Suni

The Data Dictionary and Calculations, Part 2

0 komentar

There are links to related essays on normalization and denormalization at the bottom of this post.



This blog has two tables of contents, the
Topical Table of Contents and the list
of
Database Skills.



The Simple Case Is Not Much Help



We will begin by examining a simple case of a shopping
cart. We have columns QTY and PRICE, and we want to
add the column EXTENDED_PRICE that will contain
PRICE * QTY. Our dictionary might look something like
this:




table orderlines:
...details...

column price:
# see last week's essay for details on FETCH
automation_id: FETCH
auto_formula: items.price

# A user-entered value, no automation
column quantity:

# The extended price:
column extended_price:
automation_id: extend
auto_formula: price * qty


This seems simple enough, we have specified the formula right in
the table definition, and now we are free to make use of that
formula in any way we want -- either by generating code or
interpreting it at run-time.



Unfortunately it is a bad idea to start coding right now
with this example. The problem is that it is too simple,
and will lead us down paths that cause great problems when
we hit more complex cases. We must begin with a more complex
case before we consider how to use this formula in our
framework.



Not All Items Are Taxable



Consider the case where you have a shopping cart online and
you must collect sales tax, but not all items are taxable.
This means you need conditional logic of some sort, you must
look at a flag and then decide whether to add tax. Here is
a first stab at what this might look like:




table orderlines:
...details....

# We'll skip the details on these columns for now
column price:
column quantity:
column flag_taxable:
column taxrate:

# We need to know the extended amount, that is
# what we will tax
column extended_amount:
automation_id: extend
auto_formula: price * qty

# Here is the column that matters
column tax:
automation_id: extend
auto_formula: CASE WHEN flag_taxable = 'Y'
THEN taxrate * extended_amount
ELSE 0 END


While this looks like a simple enough extension to the first
example, it gets us into a thorny decision, the decision
between parsing and assembling



Parse Versus Assemble



Before I get into the parse vs. assemble, question, let me
pull back and explain why the example bothers me, and why
it is worth an entire essay to discuss. In short, we intend
to use the dictionary to implement a radical form of DRY -
Don't Repeat Yourself (see "http://en.wikipedia.org/wiki/Don%27t_repeat_yourself"
>The Wikipedia article on DRY
.) Once we have specified the
formula in the dictionary, we want to use it for all
code generation and docs generation at very least, but we
may also want to refer to the formulas in Java code (or PHP,
Python, Ruby etc.) or even in Javascript code on the browser.



But the problem with the example is that it is coded in
SQL. In the form I presented, it can be used for generating
triggers, but not for anything else, unless you intend to
use a parser to split it all up into pieces that can be
reassembled for different presentations. The example as
written is useful only for a single purpose -- but everything
in our dictionary ought to be useful at any layer in the
framework for any purpose.



But it gets worse. What if the programmer uses a dialect
of SQL aimed for one platform that does not work on another?
To guarantee cross-server compatibility, we not only have to
parse the phrase, but then re-assemble it.



There is a third argument against the use of SQL expressions.
We may be able to parse the expression and satisfy ourselves
that it is valid, but that still does not mean it will
work -- it may refer to non-existent columns or require
typecasts that the programmer did not provide. This leads to
one terrible event that you ought to be able to prevent when
you use a dictionary: having an upgrade run successfully only
to hit a run-time error when somebody uses the system.



A much simpler method is to assemble expressions by
having the programmer provide formulas that are already cut up
into pieces.



The Assembly Route



So I want to have formulas, including conditionals, and I want
to be able to use the formulas in PHP, Java, Javascript, inside
of triggers, and I want to be able to generate docs out of them
that do not contain code fragments, and I want to be able to
guarantee when an upgrade has run that there will be no errors
introduced through programmer mistakes in the dictionary.
The way to do this is to specify the formulas a little
differently:




column taxable:
calculate:
case 00:
compare: @flag_taxable = Y
return: @taxrate * @extended_amount
case 01:
return: 0


Here are the changes I have made for this version:

  1. The programmer must specify each case in order
  2. Each case is a compare statement followed by a return
  3. A case without a compare is unconditional, it always
    returns and processing ends
  4. I stuck little '@' signs in front of column names,
    I will explain those in a moment.


In short, we want the programmer to provide us with the
conditional statements already parsed out into little pieces,
so when we load them they look like data instead of code.
We now have the responsibility for assembling code fragments,
but in exchange we have pre-parsed data that can be handed
to any programming language and used.



Conclusion: Assembly Means Data



The decision to go the assembly route is simply another example
of the "http://database-programmer.blogspot.com/2008/05/minimize-code-maximize-data.html"
>Minimize Code, Maximize Data
principle. The dictionary
itself should be composed entirely of data values, no code snippets
should be allowed to sneak in. The reason is simple. No matter what
route we follow we will have to validate and assemble the formula -
be it for PHP, Javascript, or an alternate database server. But if
we let the programmer give us code snippets we have the extra
burden of parsing as well. Who needs it?





Related Essays




This blog has two tables of contents, the
Topical Table of Contents and the list
of
Database Skills.



The normalization essays on this blog are:


Suni

Download HCL Laptop and Desktop drivers

0 komentar
Yesterday someone asked me to reformat his laptop.

I said ok I will do just give the driver CD of the Laptop but the reply that I got was not good for me. He said he doesn�t have the driver CD and worst thing was that I didn�t have the option to say no.

I thought it�s OK I will get the drivers from HCL website and will install it but when I searched for the driver on HCL InfoSystems website, I found it�s of no use, there were nothing like download driver on their website. After this I had no option other then Google

After some times goggling I found a link that solved my purpose partly. This link was from HCL InfoSystems but not on any domain. It�s an IP that contains all the drivers.

So for any kind of HCL Laptop and desktop driver you need to visit this url.

After visiting this url select your device laptop or desktop then wait for some time, it wi fetch all the available desktop or laptop drivers. Once you are done with your model number click on go and in few second it will take you to your desired driver page.

Now you can download the driver but some time you may find that download is too slow weather you have a 8mbps connection. So if it�s taking too much time to download that particular driver you have an alternate option. Get the driver name and version number from HCL driver page and download it separately using Google. I did so for sound driver of above laptop.
I hope it was use full for you
Suni

Delete Exchange server log automatically on windows server 2008

0 komentar

Delete Exchange server log automatically on windows server 2008

I have MS Exchange server 2007 on windows server 2008


It works great but every positive thing hold a negative in it so exchange server 2007 over windows server 2008 is there. I was not able to take online backup of Exchange server 2007 on windows server 2008 because NT Backup utility is not available there in windows server 2008.


My problem was that I was not able to take backup of exchange edb file and because of that logs were filling the hard disk and due to logs when Hard disk goes full MY MS Exchange server 2007 stop working. So I had to delete the logs manually and sometime restart of server and that only Exchange server works properly.


So for get rid of this problem I discussed with one of my friend Shahnawaz Khan and he created a tiny utility.


* This utility copy all the logs file with extension .log at some other location and delete log file from original location.

* After copying the files it will delete original log files.

* After 30 Days copied file will get deleted from copied location too.

* This utility will delete files that are older than 7 Days.


You can download this tool from here.


You can use this utility not only for exchange server log deletion but you can use it for any kind of log deletion.

Ok let me explain you how to use this utility.

1) Download this utility from here.

2) Extract it with password www.techraga.com

3) Open logpurger.exe.config file with a notepad.

4) Now you will get some code as in following image.

5) You need to give your source directory in value of source Marked as red.

6) Then give destination directory in value of destination Marked as red.

7) Make sure you give fully qualified name as its given in image.

8) Now you just need to run the logpurger.exe file and you are done.


It will take all the backup of log files and will delete old log files


If you want to make it on daily basis you can schedule it in a schedule task. For more information about scheduled task you can visit my previous post here.


Disclaimer

1) I am not responsible for any kind of damage of your computer with this tool.

2) You should scan it by your trusted antivirus before use

3) If you are using it on a live environment I would recommend you use test it on a testing machine before real machine.

4) If any data is loss in this procedure I will have no responsibility for that.

5) This tool comes with no warranty and guarantee so use if you us this utility no one has any responsibility.

You can discuss for this on my sites forum also if you face any problem in this.

You can discuss for this here

Suni

The Data Dictionary and Calculations, Part 1

0 komentar

The stunning power of a data dictionary comes into play once
the dictionary contains formulas for calculated values.
The dictionary can then be used to generate code, and also
to generate documentation. This double-win is not available
without the calculations because the resulting docs and
database would be incomplete, requiring tedious and
error-prone manual completion.




There are links to related essays on normalization and denormalization at the bottom of this post.



This blog has two tables of contents, the
Topical Table of Contents and the list
of
Database Skills.




Calculations and Normalization



Before I begin, I will point out that all calculated values
stored in a database are denormalizing, they all
introduce redundancies. This does not mean they are bad,
it just means you need a way to make sure they stay
correct (see "http://database-programmer.blogspot.com/2008/11/keeping-denormalized-values-correct.html"
>Keeping Denormalized Values Correct
, also see "http://www.andromeda-project.org/pages/cms/normalization+and+automation.html"
>Normalization and Automation
). If you cannot
keep them correct, they will get very bad very fast. This essay
will show you one approach to ensuring calculated values
are always correct.



However, before I start, I have to point out how important
it is to begin by normalizing your database (to at least 3NF)
and adding calculations only upon the strong foundation
of a normalized database
. If you do not normalize first,
you will discover that it is impossible to work up formulas
that make any sense -- values will always seem to be not quite
where you need them, and it will always seem you need one more
kind of calculation to support, and it will be very difficult
to write the code generator that gives strong results.
But if you build on a normalized database, it turns out you
only need a few features in your dictionary and your code
generator.



Use Denormalization Patterns



Once you have normalized your database, you will find that
your calculations all fall into three basic categories
(detailed in April 2008 in "http://database-programmer.blogspot.com/2008/04/denormalization-patterns.html"
>Denormalization Patterns
). These three patterns are:



  • FETCH operations, like copying an item's price from
    the ITEMS table to the ORDERLINES table.
  • EXTEND operations, which are calculations within a row,
    such as assigning EXTENDED_PRICE the value of QUANTITY * PRICE.
  • AGGREGATE operations, like a SUM of the lines of an order
    to the order header.


This week we will look at the first type of operations,
the FETCH operations.



Putting the FETCH Into Your Data Dictionary



So we have an ORDERLINES table, and it contains a PRICE
column, and the value of that column should be copied from
the ITEMS table. This is an extremely common operation in
most database applications, so we decide it would be really
cool if we could specify that in the data dictionary and have
the code generator take care of it. This would chop a lot of
labor off the development process.



Here is how a column like this would appear in my own
dictionary format:




table orderlines:
description: Order Lines
module: sales

column price:
automation_id: fetch
auto_formula: items.price
...more columns...


This looks nice, I have put the formula for the PRICE column into
the data dictionary. Now of course I need that formula to get
out into the application somehow so that it will always be
executed and will never be violated.
We will now see how to
do that.



The Trigger Approach



When it comes to code generators, if there are ten programmers
in a room, there are going to be at least 10 opinions
on how to write and use a code generator (the non-programmer boss
will also have an opinion, so that makes 11). I have no interest
in bashing anybody's approach or trying to list all of the
possibilities, so I will stick with the approach I use myself,
which is to generate database trigger code. If you want to know
why that approach works for me, check out "http://database-programmer.blogspot.com/2008/05/database-triggers-encapsulation-and.html"
>Triggers, Encapsulation and Composition
.



When I work on code generators, I begin by manually coding an
example of what I'm getting at, so I know it works. The trigger
snippet we are looking for must do two things. It must make sure
the price is always copied, and it must make sure that no user
can subvert the value. This snippet (which is in the PostgreSQL
flavor of server-side SQL) does this on an insert:




-- top of trigger....

-- PART 1: Prevent users from subverting the
-- the formula by throwing error if they
-- try to supply a value:
IF new.price IS NOT NULL THEN
ErrorCount = ErrorCount + 1;
ErrorList = ErrorList || 'price,5001,may not be explicitly assigned;';
END IF;

-- PART 2: If the value of SKU exists, use it to look
-- up the price and copy it into the new row
IF new.sku IS NOT NULL THEN
SELECT INTO new.price par.price
FROM items par
WHERE new.sku = par.sku ;
END IF;

-- more trigger stuff


NOTE! You may notice my trigger code somehow seems to "know" to
use the SKU column when searching the ITEMS table, yet my formula
did not specify that. I am assuming your data dictionary contains
definitions of primary keys and foreign keys, otherwise it is of
no real use
. I am further assuming that when I see the formula
to "FETCH" from the ITEMS table, I can look up the foreign key that
matches ORDERLINES to ITEMS and find out what column(s) to use.



The example above works on INSERT operations only. You need
a slightly different version for updates, which throws an error
if the user attempts to change the price, and which does a new
FETCH if the user has changed the SKU value.




IF new.price <> old.price THEN
ErrorCount = ErrorCount + 1;
ErrorList = ErrorList || 'price,5001,may not be explicitly assigned;';
END IF;
IF coalesce(new.sku,'') <> coalesce(old.sku,'') THEN
SELECT INTO new.price par.price
FROM items par WHERE new.sku = par.sku ;
END IF;


Sidebar: A Complete Trigger



If you want a teaser on how many amazing things the trigger can
do once you've loaded up your dictionary and builder with features,
here is a bit of code from a demo application. Most everything in
it will get treated in this series on the data dictionary.




CREATE OR REPLACE FUNCTION orderlines_upd_bef_r_f()
RETURNS trigger AS
$BODY$
DECLARE
NotifyList text = '';
ErrorList text = '';
ErrorCount int = 0;
AnyInt int;
AnyInt2 int;
AnyRow RECORD;
AnyChar varchar;
AnyChar2 varchar;
AnyChar3 varchar;
AnyChar4 varchar;
BEGIN
SET search_path TO public;


-- 1010 sequence validation
IF (new.recnum_ol <> old.recnum_ol) THEN
ErrorCount = ErrorCount + 1;
ErrorList = ErrorList || 'recnum_ol,3002, may not be re-assigned;';
END IF;

-- 1010 sequence validation
IF (new.skey <> old.skey) THEN
ErrorCount = ErrorCount + 1;
ErrorList = ErrorList || 'skey,3002, may not be re-assigned;';
END IF;

-- 3100 PK Change Validation
IF new.recnum_ol <> old.recnum_ol THEN
ErrorCount = ErrorCount + 1;
ErrorList = ErrorList || 'recnum_ol,1003,Cannot change value;';
END IF;
-- 3100 END


IF new.flag_taxable <> old.flag_taxable THEN
ErrorCount = ErrorCount + 1;
ErrorList = ErrorList || 'flag_taxable,5001,may not be explicitly assigned;';
END IF;

IF new.price <> old.price THEN
ErrorCount = ErrorCount + 1;
ErrorList = ErrorList || 'price,5001,may not be explicitly assigned;';
END IF;
IF coalesce(new.sku,'') <> coalesce(old.sku,'') THEN
SELECT INTO new.flag_taxable
,new.price
par.flag_taxable
,par.price
FROM items par WHERE new.sku = par.sku ;
END IF;

-- 5000 Extended Columns
IF new.amt_retail <> old.amt_retail THEN
ErrorCount = ErrorCount + 1;
ErrorList = ErrorList || 'amt_retail,5002,Cannot assign value directly to column amt_retail ;';
ELSE
new.amt_retail = CASE WHEN 1 = 1 THEN new.price*new.qty ELSE 0 END ;
END IF;


IF new.pct99_discount <> old.pct99_discount THEN
IF new.pct99_discount <> (SELECT par.pct99_discount FROM orders par WHERE new.recnum_ord = par.recnum_ord ) THEN
ErrorCount = ErrorCount + 1;
ErrorList = ErrorList || 'pct99_discount,5001,may not be explicitly assigned;';
END IF;
END IF;

IF new.taxauth <> old.taxauth THEN
IF new.taxauth <> (SELECT par.taxauth FROM orders par WHERE new.recnum_ord = par.recnum_ord ) THEN
ErrorCount = ErrorCount + 1;
ErrorList = ErrorList || 'taxauth,5001,may not be explicitly assigned;';
END IF;
END IF;

IF new.taxpct <> old.taxpct THEN
IF new.taxpct <> (SELECT par.taxpct FROM orders par WHERE new.recnum_ord = par.recnum_ord ) THEN
ErrorCount = ErrorCount + 1;
ErrorList = ErrorList || 'taxpct,5001,may not be explicitly assigned;';
END IF;
END IF;
IF coalesce(new.recnum_ord,0) <> coalesce(old.recnum_ord,0) THEN
SELECT INTO new.pct99_discount
,new.taxauth
,new.taxpct
par.pct99_discount
,par.taxauth
,par.taxpct
FROM orders par WHERE new.recnum_ord = par.recnum_ord ;
END IF;

-- 5000 Extended Columns
IF new.amt_discount <> old.amt_discount THEN
ErrorCount = ErrorCount + 1;
ErrorList = ErrorList || 'amt_discount,5002,Cannot assign value directly to column amt_discount ;';
ELSE
new.amt_discount = CASE WHEN 1 = 1 THEN new.amt_retail*new.pct99_discount*.01 ELSE 0 END ;
END IF;

-- 5000 Extended Columns
IF new.amt_net <> old.amt_net THEN
ErrorCount = ErrorCount + 1;
ErrorList = ErrorList || 'amt_net,5002,Cannot assign value directly to column amt_net ;';
ELSE
new.amt_net = CASE WHEN 1 = 1 THEN new.amt_retail-new.amt_discount ELSE 0 END ;
END IF;

-- 5000 Extended Columns
IF new.amt_tax <> old.amt_tax THEN
ErrorCount = ErrorCount + 1;
ErrorList = ErrorList || 'amt_tax,5002,Cannot assign value directly to column amt_tax ;';
ELSE
new.amt_tax = CASE WHEN new.flag_taxable = 'Y' THEN new.amt_net*new.taxpct*.01 ELSE 0 END ;
END IF;

-- 5000 Extended Columns
IF new.amt_due <> old.amt_due THEN
ErrorCount = ErrorCount + 1;
ErrorList = ErrorList || 'amt_due,5002,Cannot assign value directly to column amt_due ;';
ELSE
new.amt_due = CASE WHEN 1 = 1 THEN new.amt_net+new.amt_tax ELSE 0 END ;
END IF;

-- 7010 Column Constraint
new.flag_taxable = UPPER(new.flag_taxable);
IF NOT (new.flag_taxable IN ('Y','N')) THEN
ErrorCount = ErrorCount + 1;
ErrorList = ErrorList || 'new.flag_taxable,6001,Column -Taxable- can be either Y or N;';
END IF;

-- 8001 Insert/Update Child Validation: NOT NULL
IF new.sku IS NULL THEN
ErrorCount = ErrorCount + 1;
ErrorList = ErrorList || 'sku,1005,Required Value;';
END IF;
-- 8001 FK Insert/Update Child Validation
IF new.sku IS NULL THEN
--Error was reported above, not reported again
--ErrorCount = ErrorCount + 1;
--ErrorList = ErrorList || '*,1005,Foreign key columns may not be null: sku;';
ELSE
-- LOCK TABLE items IN EXCLUSIVE MODE;
SELECT INTO AnyInt COUNT(*) FROM items par
WHERE par.sku = new.sku;
IF AnyInt= 0 THEN

ErrorCount = ErrorCount + 1;
ErrorList = ErrorList || 'sku,1006,Please Select Valid Value: ' || new.sku::varchar || ';';
END IF;
END IF;

-- 8001 Insert/Update Child Validation: NOT NULL
IF new.recnum_ord IS NULL THEN
ErrorCount = ErrorCount + 1;
ErrorList = ErrorList || 'recnum_ord,1005,Required Value;';
END IF;
-- 8001 FK Insert/Update Child Validation
IF new.recnum_ord IS NULL THEN
--Error was reported above, not reported again
--ErrorCount = ErrorCount + 1;
--ErrorList = ErrorList || '*,1005,Foreign key columns may not be null: recnum_ord;';
ELSE
-- LOCK TABLE orders IN EXCLUSIVE MODE;
SELECT INTO AnyInt COUNT(*) FROM orders par
WHERE par.recnum_ord = new.recnum_ord;
IF AnyInt= 0 THEN

ErrorCount = ErrorCount + 1;
ErrorList = ErrorList || 'recnum_ord,1006,Please Select Valid Value: ' || new.recnum_ord::varchar || ';';
END IF;
END IF;

IF ErrorCount > 0 THEN
RAISE EXCEPTION '%',ErrorList;
RETURN null;
ELSE
IF NotifyList <> '' THEN
RAISE NOTICE '%',NotifyList;
END IF;
RETURN new;
END IF;
END; $BODY$
LANGUAGE 'plpgsql' VOLATILE SECURITY DEFINER
COST 100;
ALTER FUNCTION orderlines_upd_bef_r_f() OWNER TO postgresql;



Variatons on FETCH



I have found two variations on FETCH that have proven very
useful in real world applications.



The first I call DISTRIBUTE. It is dangerous because it can be
a real performance killer, and turns out you very rarely need it.
However, that being said, sometimes you want to copy a value from
a parent table down to every row in a child table when the value
changes in the parent. The first time I did this was to copy the
final score from a GAMES table into a WAGERS table on a fake
sports betting site.



The other variation I have found useful is FETCHDEF, my shorthand
for "fetch by default." In this variation the user is free to
supply a value of their own, but if they do not supply a value then
it will be fetched for them.



The Code Generator Itself



As for writing the code generator itself, that is of course far more
than I can cover in one blog entry or even 10. Morever, since
anybody who decides to do so will do so in their own language
and in their own style, there is little to be gained by showing
code examples here.



Conclusion: Expand Your Dictionary!



If you make up a data dictionary that only contains structure
information like columns and keys, and you write a builder program
to build your database, you can get a big win on upgrades and
installs. However, you can take that win much farther by adding
calculated values to your database and expanding your builder
to write trigger code. This week we have seen what it looks like
to implement a FETCH calculation in your dictionary and what the
resulting trigger code might look like.




Related Essays




This blog has two tables of contents, the
Topical Table of Contents and the list
of
Database Skills.



The normalization essays on this blog are:


Suni

Easily Know Battery Remaining Time

0 komentar

Know Battery Remaining Time

From my freinds and my clients I do get a request that they can not get information of the battery time remaning. They ask me some software or tool that can help them to get the remaning time detail of the laptop battery.

I was looking for some free software for the same over internet and I found battery bar. It�s a nice tool that gives the remaning time information for the laptop battery. It works fine with With XP and Windows Vista both.
Here is screen shot for my laptop�s screen. This tool says its batterys total life time is 1.14 minute that is what my laptops battery life time is. My laptop is 2 years old and when it was new its battery life time was for almost 2 hour.



For using this tool you just need to install the BatteryBar and right click on task bar then go to toolbars and select battery bar. It will add a battery bar icon in task bar. It will take atleast 2 hour to calculate your battery life time so don�t loose your patence if it take some more time.

You can download the tool from here.

You can do a discussion for this in my tech forum here

hope it was usefull for you and you enjoyed it.

Thanks for being here
Suni

You must install networking before you change this computers domain membership

0 komentar

"You must install networking before you change this computers domain membership"

Browser services are stopped, start it and it will be done

Yesterday my assistant was trying to add a new computer in domain and he found the above error. He came to me and asked what I should do now, I asked him to do a Google for this but his reply was not acceptable because he said he got nothing positive.

I did another search and found a lot of results but only few were acceptable for me because I only look for the best option that is simplest one and to the point. I don�t like to do lot of work and lot of changes for any simple task.

Ok let�s talk about the solution. Here is the solution for that.

This problem occurred because browser services are not on so turn on the browser services and it will work. For turning on browser services you need to follow the bellow step.

1. Windows+r=run panel

2. Type services.msc on run panel text box and press enter.

3. It will open services management option.

4. Here find the browser services and start it.



That�s it you are done and now you can add this computer to your domain.



Thanks for being here



I hope this helped you

Suni

Tawk.to