Delphi Dünyası Facebook'ta

Kodbank İndir

! CODEBANK 2012 !

İNDİRMEK&DETAYLI BİLGİ ALMAK İÇİN BURAYI TIKLAYINIZ.

Gönderen Konu: Tablo Kopyalamak  (Okunma sayısı 2045 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimdışı CMNSOFT

  • Delphi 2 Level 4
  • ****
  • İleti: 82
  • Rep: +2/-2
  • Cinsiyet: Bay
    • http://www.cmnsoft.com
Tablo Kopyalamak
« : 13 Ekim 2005 14:14:35 »
Alıntı
Bir tablo olduğu gibi , başka bir veri tabanına veya aynı veri tabanına kopyalanabilir. <DestTable> isimli bir tablo mevcutsa, eskisi silinir.. Bu fonksiyon oldukça güçlü bir veri taşıma aracıdır. Tablolar, BDE tarafından desteklenen, herhangi bir veri tabanı ortamından, başka bir veri tabanı ortamına kopyalanabilir. Aşağıdaki örnekte, "DBDemos" veri tabanındaki "Customer.db" isimli tablo, "Sybase" veri tabanına kopyalanmaktadır.,

Tablo yapısı, <SourceTable> tablosundan alınmak suretiyle, karşı tarafta yeni bir tablo yaratılmaktadır. Tarafların, lokalde veya uzakta olmaları farketmez.  Eğer karşı tarafta aynı adı taşıyan bir tablo varsa, silinir ve yerine yenisi yaratılır.




Kod:  (Unknown Language)
  1.  
  2.  
  3. Function DBCreateTableBorrowStr&#40;
  4.  
  5.   SourceDatabaseName   &#58; String;
  6.  
  7.   SourceTableName      &#58; String;
  8.  
  9.   DestDatabaseName     &#58; String;
  10.  
  11.   DestTableName        &#58; String&#41;&#58; Boolean;
  12.  
  13. Var
  14.  
  15.   S             &#58; TTable;
  16.  
  17.   D             &#58; TTable;
  18.  
  19.   i,j           &#58; Integer;
  20.  
  21.   IMax          &#58; Integer;
  22.  
  23.   IndexName     &#58; String;
  24.  
  25.   IndexFields   &#58; String;
  26.  
  27.   IndexFields2  &#58; String;
  28.  
  29.   Q             &#58; TQuery;
  30.  
  31.   IDXO          &#58; TIndexOptions;
  32.  
  33. Begin
  34.  
  35.   S &#58;= TTable.Create&#40;nil&#41;;
  36.  
  37.   D &#58;= TTable.Create&#40;nil&#41;;
  38.  
  39.   Try
  40.  
  41.     Try
  42.  
  43.       S.Active       &#58;= False;
  44.  
  45.       S.DatabaseName &#58;= SourceDatabaseName;
  46.  
  47.       S.TableName    &#58;= SourceTableName;
  48.  
  49.       S.TableType    &#58;= ttDefault;
  50.  
  51.       S.Active       &#58;= True;
  52.  
  53.       D.DatabaseName &#58;= DestDatabaseName;
  54.  
  55.       D.TableName    &#58;= DestTableName;
  56.  
  57.       D.TableType    &#58;= ttDefault;
  58.  
  59.       D.FieldDefs.Assign&#40;S.FieldDefs&#41;;
  60.  
  61.       D.CreateTable;
  62.  
  63.       &#123;Similar method could be used to create the indices&#125;
  64.  
  65.       &#123;D.IndexDefs.Assign&#40;S.IndexDefs&#41;;&#125;
  66.  
  67.       S.IndexDefs.Update;
  68.  
  69.       D.IndexDefs.Update;
  70.  
  71.       D.IndexDefs.Clear;
  72.  
  73.       D.IndexDefs.Update;
  74.  
  75.       For i &#58;= 0 To S.IndexDefs.Count - 1 Do
  76.  
  77.       Begin
  78.  
  79.         If Pos&#40;'.DB',UpperCase&#40;DestTableName&#41;&#41; > 0 Then
  80.  
  81.         Begin
  82.  
  83.           &#123;Paradox or DBase Tables&#125;
  84.  
  85.           If S.IndexDefs.Items&#91;i&#93;.Name = '' Then
  86.  
  87.           Begin
  88.  
  89.             If Pos&#40;'.DB',UpperCase&#40;DestTableName&#41;&#41; = 0 Then
  90.  
  91.             Begin
  92.  
  93.               IndexName &#58;= DestTableName+IntToStr&#40;i&#41;;
  94.  
  95.             End
  96.  
  97.             Else
  98.  
  99.             Begin
  100.  
  101.               IndexName &#58;= '';
  102.  
  103.             End;
  104.  
  105.           End
  106.  
  107.           Else
  108.  
  109.           Begin
  110.  
  111.             IndexName &#58;= DestTableName+IntToStr&#40;i&#41;;
  112.  
  113.           End;
  114.  
  115.           IndexFields &#58;= S.IndexDefs.Items&#91;i&#93;.Fields;
  116.  
  117.           D.AddIndex&#40;IndexName,IndexFields,
  118.  
  119.           S.IndexDefs.Items&#91;i&#93;.Options&#41;;
  120.  
  121.           D.IndexDefs.Update;
  122.  
  123.         End
  124.  
  125.         Else
  126.  
  127.         Begin
  128.  
  129.           &#123;Non Local Tables&#125;
  130.  
  131.           Q &#58;= TQuery.Create&#40;nil&#41;;
  132.  
  133.           Try
  134.  
  135.             S.IndexDefs.Update;
  136.  
  137.             D.IndexDefs.Update;
  138.  
  139.             D.IndexDefs.Clear;
  140.  
  141.             D.IndexDefs.Update;
  142.  
  143.             IMax &#58;= S.IndexDefs.Count - 1;
  144.  
  145.             For j &#58;= 0 To IMax Do
  146.  
  147.             Begin
  148.  
  149.               Q. Active      &#58;= False;
  150.  
  151.               Q.DatabaseName &#58;= DestDatabaseName;
  152.  
  153.               IndexName      &#58;= DestTableName+IntToStr&#40;i&#41;;
  154.  
  155.               IndexFields    &#58;= S.IndexDefs.Items&#91;i&#93;.Fields;
  156.  
  157.               IndexFields2   &#58;=
  158.  
  159.                 ReplaceCharInString&#40;IndexFields,';',','&#41;;
  160.  
  161.               Q.SQL.Clear;
  162.  
  163.               Q.SQL.Add&#40;'Create'&#41;;
  164.  
  165.               If ixUnique in S. IndexDefs.Items&#91;j&#93;.Options
  166.  
  167.               Then Begin
  168.  
  169.                 Q.SQL.Add&#40;'Unique'&#41;;
  170.  
  171.               End;
  172.  
  173.               If ixDescending in S.IndexDefs.Items&#91;j&#93;.Options
  174.  
  175.               Then Begin
  176.  
  177.                 Q.SQL.Add&#40;'Desc'&#41;;
  178.  
  179.               End
  180.  
  181.               Else
  182.  
  183.               Begin
  184.  
  185.                 Q.SQL.Add&#40;'Asc'&#41;;
  186.  
  187.               End;
  188.  
  189.               Q.SQL.Add&#40;'Index'&#41;;
  190.  
  191.               Q.SQL.Add&#40;IndexName&#41;;
  192.  
  193.               Q.SQL.Add&#40;'On'&#41;;
  194.  
  195.               Q.SQL.Add&#40;DestTableName&#41;;
  196.  
  197.               Q.SQL.Add&#40;'&#40;'&#41;;
  198.  
  199.               Q.SQL.Add&#40;IndexFields2&#41;;
  200.  
  201.               Q.SQL.Add&#40;'&#41;'&#41;;
  202.  
  203.               Try
  204.  
  205.                 Q.ExecSql;
  206.  
  207.                 D.IndexDefs.Update;
  208.  
  209.                 D.AddIndex&#40;IndexName,IndexFields,
  210.  
  211.                 S.IndexDefs.Items&#91;j&#93;.Options&#41;;
  212.  
  213.                 D.IndexDefs.Update;
  214.  
  215.               Except
  216.  
  217.                 On E &#58; EDBEngineError Do
  218.  
  219.                 Begin
  220.  
  221.                   If E.Message = 'Invalid array of index
  222.  
  223.                                   descriptors.'
  224.  
  225.                 Then Begin
  226.  
  227.                     Try
  228.  
  229.                       D.IndexDefs.Update;
  230.  
  231.                       D.DeleteIndex&#40;IndexName&#41;;
  232.  
  233.                       D.IndexDefs.Update;
  234.  
  235.                     Except
  236.  
  237.                     End;
  238.  
  239.                   End
  240.  
  241.                   Else
  242.  
  243.                   Begin
  244.  
  245.                     Try
  246.  
  247.                       D.IndexDefs.Update;
  248.  
  249.                       IDXO &#58;= D.IndexDefs.Items&#91;j&#93;.Options;
  250.  
  251.                     Except
  252.  
  253.                     End;
  254.  
  255.                   End;
  256.  
  257.                 End;
  258.  
  259.               End;
  260.  
  261.             End;
  262.  
  263.             //i&#58;= IMax;
  264.  
  265.           Finally
  266.  
  267.             Q.Free;
  268.  
  269.           End;
  270.  
  271.         End;
  272.  
  273.       End;
  274.  
  275.       S.Active       &#58;= False;
  276.  
  277.       Result &#58;= True;
  278.  
  279.     Finally
  280.  
  281.       S.Free;
  282.  
  283.       D.Free;
  284.  
  285.     End;
  286.  
  287.   Except
  288.  
  289.     On E &#58; Exception Do
  290.  
  291.     Begin
  292.  
  293.       ShowMessage&#40;'DBCreateTableBorrowStr Error&#58; '+E.Message&#41;;
  294.  
  295.       Result &#58;= False;
  296.  
  297.     End;
  298.  
  299.   End;
  300.  
  301. End;


Codec By GeNiUS!
:::::::::::::::::::: www.CMNSOFT.com ::::::::::::::::::::

Çevrimdışı CeRBeR

  • Delphi 1 Level 1
  • *
  • İleti: 1
  • Rep: +0/-0
Ynt: Tablo Kopyalamak
« Yanıtla #1 : 18 Kasım 2010 22:20:47 »
Hocam merhabalar

Bunun aynısının firebird için olan versiyonuda var mı acep ?