ورود

View Full Version : مبتدی: ثيت ركوردهاي يك جدول در جدولي ديگر با يك شماره



reshehri
شنبه 05 تیر 1389, 10:15 صبح
دوستان سلام!
چگونه مي توان ركوردهاي يك جدول را با يك شماره در جدولي ديگر ثبت نمود بطوري كه با ثبت ركوردهاي جدول در جدول ديگر جدول شماره 1 از ركوردها خالي و آماده ثبت ركوردهاي جديد شود ؟

shge64
شنبه 05 تیر 1389, 10:48 صبح
سلام شرمنده من خوب منظورت رو متوجه نشدم ولی این توضیحات به دردت می خوره؟
این دستورات رو نگاه کن
Insert into table2 Select * from Table1
Delete from table1
دستور اول در صورتیکه جدول 1 و جدول 2 از نظر تعداد ستوان مساوی باشند تمام رکوردهای جدول 1 را در جدول 2 کپی می کند
دستور دوم تمام رکوردهای جدول 1 را حذف می کند

جهت اجرای دستورات بالا در دلفی فقط کافی این دستورات را در خاصیت Commandtext شی TADOCammand بزاری و بعدش با Execute اجراش کنی مثل کد پایین

TADOCammand.CommandText := 'Insert into table2 Select * from Table1 '
+' Delete from table1';
TADOCammand.Execute;

reshehri
شنبه 05 تیر 1389, 12:27 عصر
دوست گرامي shge64 (http://barnamenevis.org/forum/member.php?u=84704)
منظور اين بود كه ركوردهاي موجود در جدول 1 كه بيش از يك ركورد باشد چگونه مي توان در جدول ديگري با همين تعداد ستون با اختصاص يك شماره ثبت نمود مانند مثال زير:

شماره رديف.............. تاريخ ............... شرح ............................... بدهكار......................بستانكار
.......1........................ 2/5/89 .............. بانك ............................... 2000 ................................
......2 ........................2/5/89................اثاثه ................................1000.............. ...................
.......3.........................2/5/89................سرمايه .................................................. ....... 3000

دوست عزير shge64 (http://barnamenevis.org/forum/member.php?u=84704) مي خواهم اين سه ركورد را در يك جدول جداگانه با يك شماره بنام شماره سند ثبت نمايم ضمنا شماره سند نيز بطور خودكار عمل نمايد
متشكرم

pezhvakco
شنبه 05 تیر 1389, 13:32 عصر
درود :
کد دستوری که shge64 (http://barnamenevis.org/forum/member.php?u=84704) نوشته درسته با این توضیح که داده بود >

در صورتیکه جدول 1 و جدول 2 از نظر تعداد ستوان مساوی باشند تمام رکوردهای جدول 1 را در جدول 2 کپی می کند

ولی برای زمانی که شما می خوای فقط چند ستون خاص رو انجام بدی باید ستون ها رو مشخص کنی (اگه می خوای تمام ردیف های یک جدول رو به جدول دیگه وارد کنی ) >

INSERT INTO Table1
(radif, sharh, bedehkar, bestankar)
SELECT radif, sharh, bedehkar, bestankar
FROM tempT

برای اون شماره سند که می گی می خوای خودکار عمل کنه یعنی چی ؟
شماره سند شماره به صورت Identity تعریف شده ؟ اگه این جوریه که نمیشه برای چند ردیف یک شماره داشته باشی .

فکر خوش .

hossein_h62
شنبه 05 تیر 1389, 14:50 عصر
برای شماره اسناد باید به صورت زیر عمل کنید :



ADOQuery1.SQL.Add('select max(docnum) as maxdoc from ACCDocs');
ADOQuery1.Open;
ADOQuery1.Active:=true;
edit1.Text:=inttostr(ADOQuery1.fieldbyname('maxdoc num').AsVariant+1);

با این کد شماره سند جدید در Edit نمایش داده میشه.

در ضمن پیشنهاد میکنم هدر اسناد حسابداریتون رو در یک جدول جداگانه ثبت کنید.
فرض کنید یک سند دارید با 100 آرتیکل یا حتی بیشتر، اگر هدر سند در جدول جداگانه ای ثبت بشه دیگه توی اون 100 رکورد، شماره سند،تاریخ سند،شرح سند،تاریخ ثبت سند،کاربر ثبت کننده و سایر اطلاعات موجود در هدر سند مکرر ثبت نمیشه و فقط یکبار در جدول خودش ثبت میشه.

reshehri
شنبه 05 تیر 1389, 16:52 عصر
با سلام خدمت دوستان گرامي خودم pezhvakco (http://barnamenevis.org/forum/member.php?u=59994) و hossein_h62 (http://barnamenevis.org/forum/member.php?u=97704)

تشكر فراوان از راهنمايي خوبتان
آقاي hossein_h62 (http://barnamenevis.org/forum/member.php?u=97704) راستش منظورتان را خوب نفهميدم اگر امكان دارد طوري توضيح دهيد كه من مبتدي بفهمم چي مي گي!

pezhvakco
شنبه 05 تیر 1389, 17:08 عصر
کد دستور hossein_h62 (http://barnamenevis.org/forum/member.php?u=97704) برای بدست آوردن بیش ترین شماره موجود در جدول است که برای نمایش در صفحه کاربر میشه اسفاده کرد و در آخر این شماره در جدولت برای ردیف سند ها استفاده میشه .


در ضمن پیشنهاد میکنم هدر اسناد حسابداریتون رو در یک جدول جداگانه ثبت کنید.
هدر = اظلاعات کلی یک سند که مربوط به خود سند است و نه ردیف های اون مانند : توضیح، کاربر ثبت کننده، تاریخ و موارد دیگه ای که بعضی زمان ها لازمه باشه . (میشه به جای هدر بگی قسمت اصلی یا خود سند )
فکر خوبیه تا مدیریت بهتری روی فضای اختصاص داده شده به هر سند، گزارش گیری ها و ... داشته باشی .

فکر خوش .

powerboy2988
شنبه 05 تیر 1389, 17:09 عصر
چرا از trigger استفاده نمي كني؟

reshehri
سه شنبه 08 تیر 1389, 12:59 عصر
دوست عزيز powerboy2988 (http://barnamenevis.org/forum/member.php?u=22490)

منظور شما از(triggerچيه ميشه توضيح دهيد

ms.nazeri
پنج شنبه 17 تیر 1389, 17:16 عصر
دوست گرامی Reshehri بیشتر گیج شدن با این توضیحاتی که دادین ..:لبخندساده:
ولی خداییش خیلی توضیحات خوبی بود کلا این سایت جالبه .

خیلی خوبه که با دقت همه پاسخ می دین.
*عالیه*

MOJTABAATEFEH
پنج شنبه 17 تیر 1389, 17:48 عصر
دوست گرامي shge64 (http://barnamenevis.org/forum/member.php?u=84704)
منظور اين بود كه ركوردهاي موجود در جدول 1 كه بيش از يك ركورد باشد چگونه مي توان در جدول ديگري با همين تعداد ستون با اختصاص يك شماره ثبت نمود مانند مثال زير:

شماره رديف.............. تاريخ ............... شرح ............................... بدهكار......................بستانكار
.......1........................ 2/5/89 .............. بانك ............................... 2000 ................................
......2 ........................2/5/89................اثاثه ................................1000.............. ...................
.......3.........................2/5/89................سرمايه .................................................. ....... 3000

دوست عزير shge64 (http://barnamenevis.org/forum/member.php?u=84704) مي خواهم اين سه ركورد را در يك جدول جداگانه با يك شماره بنام شماره سند ثبت نمايم ضمنا شماره سند نيز بطور خودكار عمل نمايد


دوست عزیز فرض می کنیم شماره سند رو شما از جدولی به اسم Sanad می گیری و فیلدی به نام SanadNu هم مربوط به شماره سند است پس طبق دستور زیر عمل می کنیم






declare @Nu int
select @Nu=max(SanadNu)+1 from Sanad
insert into table2 (SanadNu,field2,field3,field4,......) select @Nu,field2,field3,field4 from table 1


موفق باشید