| |
| |
![]() |
![]() | | Konu Seçenekleri | ![]() |
| | #1 |
| Dekan Huzur Pınarı ![]() | -------tablo kopyalama --------- ------------------------------------ Bir tablo oldugu gibi , baska bir veri tabanina veya ayni veri tabanina kopyalanabilir. isimli bir tablo mevcutsa, eskisi silinir.. Bu fonksiyon oldukça güçlü bir veri tasima aracidir. Tablolar, BDE tarafindan desteklenen, herhangi bir veri tabani ortamindan, baska bir veri tabani ort***** kopyalanabilir. Asagidaki örnekte, “DBDemos” veri tabanindaki “Customer.db” isimli tablo, “Sybase” veri tabanina kopyalanmaktadir., Tablo yapisi, tablosundan alinmak suretiyle, karsi tarafta yeni bir tablo yaratilmaktadir. Taraflarin, lokalde veya uzakta olmalari farketmez. Eger karsi tarafta ayni adi tasiyan bir tablo varsa, silinir ve yerine yenisi yaratilir. ----------------------------------------------------- Function DBCreateTableBorrowStr( SourceDatabaseName : String; SourceTableName : String; DestDatabaseName : String; DestTableName : String): Boolean; Var S : TTable; D : TTable; i,j : Integer; IMax : Integer; IndexName : String; IndexFields : String; IndexFields2 : String; Q : TQuery; IDXO : TIndexOptions; Begin S := TTable.Create(nil); D := TTable.Create(nil); Try Try S.Active := False; S.DatabaseName := SourceDatabaseName; S.TableName := SourceTableName; S.TableType := ttDefault; S.Active := True; D.DatabaseName := DestDatabaseName; D.TableName := DestTableName; D.TableType := ttDefault; D.FieldDefs.Assign(S.FieldDefs); D.CreateTable; {Similar method could be used to create the indices} {D.IndexDefs.Assign(S.IndexDefs);} S.IndexDefs.Update; D.IndexDefs.Update; D.IndexDefs.Clear; D.IndexDefs.Update; For i := 0 To S.IndexDefs.Count - 1 Do Begin If Pos('.DB',UpperCase(DestTableName)) > 0 Then Begin {Paradox or DBase Tables} If S.IndexDefs.Items.Name = " Then Begin If Pos('.DB',UpperCase(DestTableName)) = 0 Then Begin IndexName := DestTableName+IntToStr(i); End Else Begin IndexName := "; End; End Else Begin IndexName := DestTableName+IntToStr(i); End; IndexFields := S.IndexDefs.Items.Fields; D.AddIndex(IndexName,IndexFields, S.IndexDefs.Items.Options); D.IndexDefs.Update; End Else Begin {Non Local Tables} Q := TQuery.Create(nil); Try S.IndexDefs.Update; D.IndexDefs.Update; D.IndexDefs.Clear; D.IndexDefs.Update; IMax := S.IndexDefs.Count - 1; For j := 0 To IMax Do Begin Q. Active := False; Q.DatabaseName := DestDatabaseName; IndexName := DestTableName+IntToStr(i); IndexFields := S.IndexDefs.Items.Fields; IndexFields2 := ReplaceCharInString(IndexFields,';',','); Q.SQL.Clear; Q.SQL.Add('Create'); If ixUnique in S. IndexDefs.Items[j].Options Then Begin Q.SQL.Add('Unique'); End; If ixDescending in S.IndexDefs.Items[j].Options Then Begin Q.SQL.Add('Desc'); End Else Begin Q.SQL.Add('Asc'); End; Q.SQL.Add('Index'); Q.SQL.Add(IndexName); Q.SQL.Add('On'); Q.SQL.Add(DestTableName); Q.SQL.Add('('); Q.SQL.Add(IndexFields2); Q.SQL.Add(')'); Try Q.ExecSql; D.IndexDefs.Update; D.AddIndex(IndexName,IndexFields, S.IndexDefs.Items[j].Options); D.IndexDefs.Update; Except On E : EDBEngineError Do Begin If E.Message = 'Invalid array of index descriptors.' Then Begin Try D.IndexDefs.Update; D.DeleteIndex(IndexName); D.IndexDefs.Update; Except End; End Else Begin Try D.IndexDefs.Update; IDXO := D.IndexDefs.Items[j].Options; Except End; End; End; End; End; //i:= IMax; Finally Q.Free; End; End; End; S.Active := False; Result := True; Finally S.Free; D.Free; End; Except On E : Exception Do Begin ShowMessage('DBCreateTableBorrowStr Error: '+E.Message); Result := False; End; End; End; ------------------------------------ -------tablo Silme --------- ------------------------------------ Herhangi bir veri tabanindan tablo silmek gerektiginde, asagidaki fonksiyon kullanilabilir. Function DBDropTable(const DatabaseName, TableName : string):Boolean; var Query : TQuery; begin Result := False; If Not IsTable(DatabaseName, TableName) Then Begin Exit; End; Query := TQuery.Create(nil); try Query.DatabaseName := DatabaseName; Query.SQL.Clear; Query.SQL.Add('Drop Table '); If (Pos('.DB', UpperCase(TableName)) > 0) Or (Pos('.DBF',UpperCase(TableName)) > 0) Then Begin Query.Sql.Add('"'+TableName+'"'); End Else Begin End; Result := True; Try Query.ExecSQL; Except Result := False; End; finally Query.Free; end; end; ---------------------------------------- Şahit olsun Kainat, Alemler şahit olsun . Titreyen sesin ile Yüregin şahit olsun. Çok Yakın Güzel Günler,Bir Kez Daha Ufka Bak, Hep Semaya Açtıgın,Ellerin Şahit Olsun. Ö(lürsem)S(ebebi)S(ensin) Deli Var YakalaYın ![]() |
|
![]() |
| Konu Seçenekleri | |
| |