alborzi_66
شنبه 19 مرداد 1387, 01:03 صبح
باعرض سلام من برنامه اي به زبان دلفي و ديتا بيس اس کيو ال سرورمي خواستم که مثلا3تا جدول داريم و فقط يک رکورد id بيشتر نداره , کار اين برنامه پيدا کردن رکورد تکراري جداول و
ذخيره , نمايش اون تو يه جدول جديد نامres
اسم جداولa,b,c
این برنامه من هستش :
procedure TSEARCH.Button1Click(Sender: TObject);
var
query,values :string;
tedad:integer;
begin
dbgrid1.DataSource:=DataSource1;
//select on a
adoquery1.Close;
adoquery1.SQL.Clear;
query:='SELECT * FROM a WHERE (id =';
query:=query+edit1.Text+')';
adoquery1.SQL.Add(query);
DataSource1.DataSet.Active:=true;
adoquery1.ExecSQL;
tedad:=adoquery1.RecordCount;
//select on b
adoquery1.Close;
adoquery1.SQL.Clear;
query:='SELECT * FROM b WHERE (id =';
query:=query+edit1.Text+')';
adoquery1.SQL.Add(query);
DataSource1.DataSet.Active:=true;
adoquery1.ExecSQL;
tedad:=tedad+adoquery1.RecordCount;
//select on c
adoquery1.Close;
adoquery1.SQL.Clear;
query:='SELECT * FROM c WHERE (id =';
query:=query+edit1.Text+')';
adoquery1.SQL.Add(query);
DataSource1.DataSet.Active:=true;
adoquery1.ExecSQL;
tedad:=tedad+adoquery1.RecordCount;
edit2.Text:=inttostr(tedad);
//inset to res
query:='INSERT INTO res (id, tedad) VALUES (';
query:=query+edit1.Text+','+inttostr(tedad)+')';
adocommand1.CommandText:=(query);
DataSource1.DataSet.Active:=true;
adocommand1.Execute;
end;
فقط قسمت پيدا کردن رکورد تکراري مونده که دوستم اون رو نوشته اما جواب نمیده نمیدونم این قسمتو کجا ی برنامه بنویسم از قسمت create Procedure FindRepeatedBook خطا میده
اینم تیکه برنامه اونه
create Procedure FindRepeatedBook
as
Declare Curs cursor FAST_FORWARD
For
Select id From A where id in
(Select id From B Where id in
(Select id From C where id in
))
declare @ID yourType
open curs
fetch next From curs into @ID
delete from Med
while @@Fetch_Status = 0
begin
insert into res (ID) values (@Id)
fetch next From curs into @ID
end;
select * From res
close curs
deallocate curs
go
ذخيره , نمايش اون تو يه جدول جديد نامres
اسم جداولa,b,c
این برنامه من هستش :
procedure TSEARCH.Button1Click(Sender: TObject);
var
query,values :string;
tedad:integer;
begin
dbgrid1.DataSource:=DataSource1;
//select on a
adoquery1.Close;
adoquery1.SQL.Clear;
query:='SELECT * FROM a WHERE (id =';
query:=query+edit1.Text+')';
adoquery1.SQL.Add(query);
DataSource1.DataSet.Active:=true;
adoquery1.ExecSQL;
tedad:=adoquery1.RecordCount;
//select on b
adoquery1.Close;
adoquery1.SQL.Clear;
query:='SELECT * FROM b WHERE (id =';
query:=query+edit1.Text+')';
adoquery1.SQL.Add(query);
DataSource1.DataSet.Active:=true;
adoquery1.ExecSQL;
tedad:=tedad+adoquery1.RecordCount;
//select on c
adoquery1.Close;
adoquery1.SQL.Clear;
query:='SELECT * FROM c WHERE (id =';
query:=query+edit1.Text+')';
adoquery1.SQL.Add(query);
DataSource1.DataSet.Active:=true;
adoquery1.ExecSQL;
tedad:=tedad+adoquery1.RecordCount;
edit2.Text:=inttostr(tedad);
//inset to res
query:='INSERT INTO res (id, tedad) VALUES (';
query:=query+edit1.Text+','+inttostr(tedad)+')';
adocommand1.CommandText:=(query);
DataSource1.DataSet.Active:=true;
adocommand1.Execute;
end;
فقط قسمت پيدا کردن رکورد تکراري مونده که دوستم اون رو نوشته اما جواب نمیده نمیدونم این قسمتو کجا ی برنامه بنویسم از قسمت create Procedure FindRepeatedBook خطا میده
اینم تیکه برنامه اونه
create Procedure FindRepeatedBook
as
Declare Curs cursor FAST_FORWARD
For
Select id From A where id in
(Select id From B Where id in
(Select id From C where id in
))
declare @ID yourType
open curs
fetch next From curs into @ID
delete from Med
while @@Fetch_Status = 0
begin
insert into res (ID) values (@Id)
fetch next From curs into @ID
end;
select * From res
close curs
deallocate curs
go