بروزخطا در كپي ركوردهاي يك كوئري يا جدول در يك بانك داراي پسورد ديگر(اكسس)
سلام
من يه كوئري دارم كه آخرين موجودي رو به من ميده
حالا مي خوام تمام ركوردهاي اونو در يك فايل ديگه مثلا در جدول old ذخيره كنم .
بافرض اينكه جدول old در بانك دوم وجود ندارد.
اگه ميشه نحوه ي كپي كردن تمام اطلاعات يك جدول رو ازيك فايل به فايل داراي پسورد رو بفرماييد.
نقل قول: كپي ركوردهاي يك كوئري يا جدول در يك بانك ديگر بصورت درجا(اكسس)
SELECT * FROM table1 WHERE Conditions INTO table2
نقل قول: كپي ركوردهاي يك كوئري يا جدول در يك بانك ديگر بصورت درجا(اكسس)
سلام
نقل قول:
نوشته شده توسط
babak_delphi
SELECT * FROM table1 WHERE Conditions INTO table2
كدي كه دوست گرامي Babak_Delphi نوشتند براي مواقعي هست كه دو شرط برقرار باشه .
1 - Table به نام table2 از قبل وجود نداشته باشه .
2 - هر دو جدول table1 و table2 در يك فايل پايگاه داده باشند .
بعلاوه ، يك اشكال كوچيك هم داره كه جاي INTO table2 قبل از FROM هست .
به هر ترتيب ، از اونجا كه شما جداولتون در دو پايگاه داده جدا ( دو فايل جدا ) هست ، كد ايشون
مشكلي رو حل نخواهد كرد .
چون نفرموديد جدول old از قبل وجود داره يا نه من كد هر دو حالت رو مينويسم .
فرض كنيد دو فايل Access با نامهاي Database1 و Database2 در ريشه درايو C داريد و فرض كنيم
كه جدول new_Table داريد كه دو فيلد field_1 و field_2 داره و شما مايليد اين فيلدها رو به فيلدهاي
هم عرضشون با همين نامها در جدول old_Table منتقل كنيد .
اگر old_Table از پيش وجود نداشته باشد :
with ADOQuery1 do
begin
sql.Clear;
sql.Add('select * into old_Table in '+QuotedStr('C:\DataBase2.mdb'));
sql.Add('from new_Table');
ExecSQL;
end;
اگر جدول old_Table از قبل وجود دارد ( مهم نيست كه جدول old_Table مقدار داشته باشه يا نه
فقط توجه كنيد كه فيلدهاي field_1 و field_2 در جدول مقصد از نوع AutoNumber نباشه ) :
with ADOQuery1 do
begin
sql.Clear;
sql.Add('insert into old_Table (field_1,field_2) in '+QuotedStr('C:\DataBase2.mdb'));
sql.Add('select field_1,field_2 from new_Table');
ExecSQL;
end;
توجه كنيد كه ADOQuery1 به فايل DataBase1 وصل هست .
موفق باشيد .
نقل قول: كپي ركوردهاي يك كوئري يا جدول در يك بانك ديگر بصورت درجا(اكسس)
نقل قول:
نوشته شده توسط
shervin farzin
سلام
فرض كنيد دو فايل Access با نامهاي Database1 و Database2 در ريشه درايو C داريد و فرض كنيم
كه جدول new_Table داريد كه دو فيلد field_1 و field_2 داره و شما مايليد اين فيلدها رو به فيلدهاي هم عرضشون با همين نامها در جدول old_Table منتقل كنيد .
.... .
حالا اگه database2 پسورد داشته باشه بايد چه كدي بنويسيم ؟
نقل قول: كپي ركوردهاي يك كوئري يا جدول در يك بانك ديگر بصورت درجا(اكسس)
متاسفانه من نتونستم از دستور IN براي فايلهاي پسورد دار استفاده كنم.
لطفا منو راهنمايي كنيد.
نقل قول: كپي ركوردهاي يك كوئري يا جدول در يك بانك ديگر بصورت درجا(اكسس)
نقل قول:
نوشته شده توسط
mehdimdp
حالا اگه database2 پسورد داشته باشه بايد چه كدي بنويسيم ؟
كافي بود تو اكسس تست مي كردي :
INSERT INTO (;PWD=yourpassword) NewTable ( F1, F2 ) IN 'C:\Database.mdb'[;PWD=yourpassword]
SELECT OldTable.F1, OldTable.F2
FROM OldTable;
كپي ركوردهاي يك كوئري يا جدول در يك بانك ديگر (اكسس)
سلام
از اينكه به من جواب ميدين متشكرم.
من كد شما رو با يه كم دستكاري نوشتم ولي بازم ارور ميده . اگه اينجوري بنويسم ميگه not a valid password
SELECT nakh.name, Sum(nakh.Vazn) AS [Sum Of Vazn], noe_nakh.name AS lname
into newtbl in 'c:\data2.mdb' [;PWD=1021]
FROM noe_nakh INNER JOIN nakh ON noe_nakh.nakh_cod=nakh.name
GROUP BY nakh.name, noe_nakh.name;
و اگه به صورت زير بنويسم ميگه could not find installable ISAM
SELECT nakh.name, Sum(nakh.Vazn) AS [Sum Of Vazn], noe_nakh.name AS lname
into newtbl in 'c:\data2.mdb' 'PWD=1021;'
FROM noe_nakh INNER JOIN nakh ON noe_nakh.nakh_cod=nakh.name
GROUP BY nakh.name, noe_nakh.name;
نقل قول: كپي ركوردهاي يك كوئري يا جدول در يك بانك ديگر بصورت درجا(اكسس)
من همچنان منتظر پاسخ شما هستم.
نقل قول: كپي ركوردهاي يك كوئري يا جدول در يك بانك ديگر بصورت درجا(اكسس)
شما اول دستور Insert into رو بنويس بعد Select رو
نقل قول: كپي ركوردهاي يك كوئري يا جدول در يك بانك ديگر بصورت درجا(اكسس)
نقل قول:
نوشته شده توسط
merced
شما اول دستور Insert into رو بنويس بعد Select رو
بازم همون ارور:
NOT VALID PASSWORD
INSERT INTO OLDYEAR IN "F:\Mehdi's programs\Delphi\+Enayatproj\+Enayatproj\DATA88.MDB " [;PWD=123456] SELECT COD, Ntolid AS otolid, Nsalon AS osalon, Nahar AS oahar, Nanabr AS oanbar, mande AS omande, NNsabt AS onsabt
FROM mojoodi;
نقل قول: كپي ركوردهاي يك كوئري يا جدول در يك بانك ديگر بصورت درجا(اكسس)
سلام
با تشكر فراوان از دوست عزيز Merced و عذرخواهي به خاطر تاخير در پاسخ .
استفاده از دستور IN در كد SQL يك روش براي آدرس دهي فايل Database هست . روش ديگه اي
هم وجود داره كه در مورد سوال شما ، بايد از اون استفاده كنيد . به كد زير نگاه كنيد :
select * from [;Database=c::\my_database.mdb;pwd=123].test
اين كد عمل Select رو روي جدولي از پايگاه داده my_database انجام ميده كه اين پايگاه با پسورد
به شماره 123 محافظت ميشه . اگر خوب به كد دقت كنيد خواهيد ديد كه در آدرس فايل به جاي
نوشتن \:C نوشتم \::C . خوب اين غلط املايي نيست ! اگر فقط يك بار از علامت : استفاده كنيد
دلفي فكر ميكنه كه شما در كد SQL از پارامتر استفاده ميكنيد و از شما انتظار Value داره ، اما با
نوشتن :: به جاي : شما به دلفي گفتيد كه هيچ پارامتري در كار نيست .
اگر به مثال خودم در پست 3 برگرديم ، نتيجه تغيير يافته اون كد ها به شكل زير خواهد بود .
اگر old_Table از قبل وجود نداشته باشه :
with ADOQuery1 do
begin
sql.Clear;
sql.Add('select * into [;Database=C::\Database2.mdb;pwd=your_password].old_Table');
sql.Add('from new_Table');
ExecSQL;
end;
اگر old_Table از قبل وجود داره :
with ADOQuery1 do
begin
sql.Clear;
sql.Add('insert into [;Database=C::\Database2.mdb;pwd=your_password].old_Table (f_name,l_name)');
sql.Add('select f_name,l_name from new_Table');
ExecSQL;
end;
مجددا به خاطر تاخير عذر ميخوام .
موفق باشيد .