線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:3837
推到 Plurk!
推到 Facebook!

一個維護MS SQL 的簡易程式, SQLMaintain 1.0.0.3

 
Wesly
中階會員


發表:14
回覆:103
積分:53
註冊:2002-05-31

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-10-21 13:54:59 IP:211.74.xxx.xxx 訂閱
原有功能 1.查詢欄位屬性。 2.網路廣播功能。 3."取得網路上的芳鄰"採用樹狀結構。 4.網路芳鄰的資源顯示。 5.網路資源寫入。 6.檔案存成XML。 7.資料庫備份。 8.索引檔重整。 9.資料庫壓縮。 10.顯示ADO OpenSchema 資訊。 功能易動內容 1.增加顯示"登入MSSQL電腦資訊"。 2.增加"登入MSSQL電腦資訊"資料更新Timer。 3.增加"使用者慣性設定"。 4.變更為MDI方式呼叫Form。 5.瀏覽表格資料時,增加MS SQL語法重組及搜尋功能 發表人 - Wesly 於 2004/10/21 16:47:53 發表人 - Wesly 於 2004/10/21 17:02:59
附加檔案:58250_SQLMaintain.zip
will
中階會員


發表:176
回覆:135
積分:62
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-10-23 05:36:46 IP:218.162.xxx.xxx 未訂閱
請問連接資料庫時的參數要如何設定呢?    
引言: 原有功能 1.查詢欄位屬性。 2.網路廣播功能。 3."取得網路上的芳鄰"採用樹狀結構。 4.網路芳鄰的資源顯示。 5.網路資源寫入。 6.檔案存成XML。 7.資料庫備份。 8.索引檔重整。 9.資料庫壓縮。 10.顯示ADO OpenSchema 資訊。 功能易動內容 1.增加顯示"登入MSSQL電腦資訊"。 2.增加"登入MSSQL電腦資訊"資料更新Timer。 3.增加"使用者慣性設定"。 4.變更為MDI方式呼叫Form。 5.瀏覽表格資料時,增加MS SQL語法重組及搜尋功能 發表人 - Wesly 於 2004/10/21 16:47:53 發表人 - Wesly 於 2004/10/21 17:02:59
Wesly
中階會員


發表:14
回覆:103
積分:53
註冊:2002-05-31

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-10-24 19:02:56 IP:218.171.xxx.xxx 訂閱
如同在Delphi下設ADOConnection一般, 對不起此一程式是因為工作關係所開發的一個小程式, 都是對MS SQL 2000為對像, 其它的資料庫沒有測過, 會將所設定存在MS SQL Explorer.ini下, 是一個隱藏檔。 因為沒有手冊請自行測試,在某些畫面按右鍵會有一些功能。 我也能模擬MS SQL Enterprise Management 在備份時所開啟的備份檔目錄畫面, 但十分的慢, 特別是MS SQL Server所在的伺服器子目錄很多的時候更慘, 這是我所要改進的地方 希望能對你有所幫助.
Wesly
中階會員


發表:14
回覆:103
積分:53
註冊:2002-05-31

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-10-25 11:39:40 IP:218.170.xxx.xxx 訂閱
對不起程式有下列修正 1.修正備份失敗的問題。 2.取得MS SQL備份路徑 A.改進開啟本畫面的速度。 B.對映至最後一次備份路徑。 希望能對你有所幫助.
Wesly
中階會員


發表:14
回覆:103
積分:53
註冊:2002-05-31

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-10-31 16:42:50 IP:218.171.xxx.xxx 訂閱
有站上的朋友請我公佈原始碼,特別是在”網路芳鄰”那一段。 其實在”網路芳鄰”大部份是參考站上的一些文章,再依個人現實的需要整合出來的,所以怕有侵權的行為,而且我也忘了是參考那些人的文章了。 另外在”廣播”這一功能,對Win 95/98/Me 沒有作用,在Win XP SP2也沒有作用(請參考Microsoft 839018文件)
Wesly
中階會員


發表:14
回覆:103
積分:53
註冊:2002-05-31

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-10-31 22:25:09 IP:220.134.xxx.xxx 訂閱
存入網路資訊如下
procedure Tfm_NetTree.NetSavetoExcel;
const
  Cols = 4;
var
  index, i, j: Integer;
  Excel, workbook, worksheet: variant;
  GroupName, ComputerName, IP, MACAddress: string;
  FPath, FFileName: string;
begin
  if (tvNet.Items.Count > 0) then
  begin
    try
      Excel := CreateOleObject('Excel.Application');
      if Application.MessageBox('是否進入 Excel 編修模式?',
        '程式執行確認', MB_YesNo   MB_DEFBUTTON1  
        MB_IconQuestion   MB_ApplModal) = IDYES then
        Excel.Application.Visible := True
      else Excel.Application.Visible := False;
      workbook := Excel.WorkBooks.Add;
      worksheet := Excel.WorkSheets['sheet1'];
      try
        index := 1;
        j := 1;
        //寫入製表日期時間
        worksheet.Cells[index, j] := '產生日期時間:';
        Inc(j);
        Excel.WorkSheets[1].Columns[j].NumberFormatLocal := '@';
        worksheet.Cells[index, j] := FormatDateTime('yyyy/mm/dd hh:mm', now);
        Inc(index);
        //標題
        for j := 1 to Cols do
          case j of
            1: worksheet.Cells[index, j] := '群組';
            2: worksheet.Cells[index, j] := '電腦名稱';
            3: worksheet.Cells[index, j] := 'IP';
            4: worksheet.Cells[index, j] := '網卡卡號';
          end;
        Inc(index);
        //內容
        j := 0;
        for i := 0 to tvNet.Items.Count - 1 do
        begin
          case tvNet.Items[i].Level of
            0: begin
                GroupName := tvNet.Items[i].Text;
                j := 0;
              end;
            1: begin
                ComputerName := tvNet.Items[i].Text;
                j := 0;
              end;
            2: case j of
                0: begin
                    IP := tvNet.Items[i].Text;
                    j := 1;
                  end;
                1: begin
                    MACAddress := tvNet.Items[i].Text;
                    j := 2;
                  end;
              end;
          end;
          if j = 2 then
          begin
            for j := 1 to Cols do
              case j of
                1: worksheet.Cells[index, j] := GroupName;
                2: worksheet.Cells[index, j] := ComputerName;
                3: worksheet.Cells[index, j] := IP;
                4: worksheet.Cells[index, j] := MACAddress;
              end;
            Inc(index);
          end;
        end;
        //最適欄寬
        for j := 1 to Cols do
        begin
          Excel.WorkSheets[1].Columns[j].AutoFit;
          Excel.WorkSheets[1].Columns[j].ColumnWidth :=
            Excel.WorkSheets[1].Columns[j].ColumnWidth   1;
        end;
        //
        FPath := ExtractFileDir(Application.ExeName);
        FFileName := '網路資訊';
        worksheet.SaveAs(FPath   '\'   FFileName   '.xls');
        beep;
        ShowMessage('已產生  "'   FFileName   '.xls'   '" 檔案至 "'   Fpath   '" 目錄下!!');
      finally
        if not Excel.Application.Visible then
        begin
          Excel.WorkBooks.Close;
          Excel.Quit;
        end;
      end;
    except
      ShowMessage('無法啟動Excel!!');
    end;
  end
  else ShowMessage('請先取得網路資訊!!');
end;
希望能對你有所幫助.
Wesly
中階會員


發表:14
回覆:103
積分:53
註冊:2002-05-31

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-10-31 22:28:53 IP:220.134.xxx.xxx 訂閱
廣播如下
procedure Tfm_NetTree.BoardCast;
var
  i: Integer;
  SendMSG, ComputerName: string;
  doSend: Boolean;
begin
  if Trim(edBoardCastMSG.Text) <> '' then
  begin
    if (tvNet.Items.Count > 0) then
    begin
      for i := 0 to tvNet.Items.Count - 1 do
        if tvNet.Items[i].Selected then
        begin
          doSend := False;
          if tvNet.Items[i].Level = 1 then
          begin
            doSend := True;
            ComputerName := tvNet.Items[i].Text;
          end;
          if doSend then
          begin
            SendMSG := 'Net Send '   ComputerName   ' '  
              ''''   edBoardCastMSG.Text   '''';
            winexec(PChar(SendMSG), SW_HIDE)
          end;
        end
    end
    else ShowMessage('請選擇廣播對像!!');
  end
  else ShowMessage('請輸入廣播訊息!!');
end;
Wesly
中階會員


發表:14
回覆:103
積分:53
註冊:2002-05-31

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-10-31 22:34:25 IP:220.134.xxx.xxx 訂閱
取得網路樹
procedure Tfm_NetTree.GetNetTree;
var
  tmp, tmp1, ResourceList: TStringList;
  i, j, k: Word;
  GroupNode, ComputerNode, ResourceNode: TTreeNode;
  IP, MACAddress: string;
begin
  tmp := TStringList.Create;
  tmp1 := TStringList.Create;
  ResourceList := TStringList.Create;
  try
    tvNet.Items.Clear;
    GetGroupList(tmp);
    if tmp.Count > 0 then
      for i := 0 to tmp.Count - 1 do
      begin
        GetUsers(tmp.Strings[i], tmp1);
        GroupNode := tvNet.Items.AddChild(tvNet.Selected, tmp.Strings[i]);
        if tmp1.Count > 0 then
        begin
          for j := 0 to tmp1.Count - 1 do
          begin
            ComputerNode := tvNet.Items.AddChild(GroupNode, tmp1.Strings[j]);
            //取得IP值
            IP := GetIP(tmp1.Strings[j]);
            tvNet.Items.AddChild(ComputerNode, IP);
            //取得IP Mac Address
            if Trim(IP) <> '' then
              MACAddress := GetMacFromIP(IP)
            else MACAddress := '';
            tvNet.Items.AddChild(ComputerNode, MACAddress);
            //取得網路資源
            ResourceNode := tvNet.Items.AddChild(ComputerNode, '網路資源');
            if GetUserResource(tmp1.Strings[j], ResourceList) and
              (ResourceList.Count > 0) then
              for k := 0 to ResourceList.Count - 1 do
                tvNet.Items.AddChild(ResourceNode, ResourceList.Strings[k]);
            tvNet.Update;
          end;
          tmp1.Clear;
        end;
      end;
  finally
    tmp.Free;
    tmp1.Free;
    ResourceList.Free;
  end;
end;
希望能對你有所幫助.
bhead811
一般會員


發表:13
回覆:18
積分:6
註冊:2003-05-29

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-11-16 19:04:52 IP:211.75.xxx.xxx 未訂閱
這個功能是很不錯,不知可否公佈原始碼
Wesly
中階會員


發表:14
回覆:103
積分:53
註冊:2002-05-31

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-11-18 12:53:56 IP:218.171.xxx.xxx 訂閱
是否可以告訴我要那段,看看是否有與元件及函數有關,若沒有,則我是很樂意公開
vicky097
一般會員


發表:0
回覆:1
積分:0
註冊:2006-12-22

發送簡訊給我
#11 引用回覆 回覆 發表時間:2007-07-16 16:32:29 IP:61.225.xxx.xxx 訂閱
請問使用ADO.OpenSchema取得資料結構時numeric和decimal的DATA_TYPE 在MS SQL都是131
但你的欄位郤可分別出來..可否教一下是如何區分的哩..感謝

===================引 用 Wesly 文 章===================
是否可以告訴我要那段,看看是否有與元件及函數有關,若沒有,則我是很樂意公開
編輯記錄
vicky097 重新編輯於 2007-07-16 16:36:32, 註解 無‧
Wesly
中階會員


發表:14
回覆:103
積分:53
註冊:2002-05-31

發送簡訊給我
#12 引用回覆 回覆 發表時間:2007-08-02 11:25:39 IP:218.174.xxx.xxx 訂閱
有人問我下列問題
ADO.OpenSchema取得資料結構時numeric和decimal的DATA_TYPE 在MS SQL都是131,欄位如何區分?
請問您是否在”MS SQL Manager”內看到欄位的區分呢?若是,那是我執行了MSSQL內的"預存程序""sp_columns ",指令您可以參考MS SQL 的 Online Help,這就為什麼我放在”MS SQL Manager”,而非”Schema”程式內,因為”Schema”是根據各家提供的資料轉出而得,而”MS SQL Manager”是專門執MS SQL的相關指令。
至於”還有為什麼你的程式連ORACLE就可取得欄位大小..我的就不行哩..都是使用OPENSCHEMA”這個問題,因為我手上沒有Oracle,所以沒有辦法回答您的問題。但是可以請告知是在那支程式執行的呢?(看Form Caption)

Wesly 8/2
編輯記錄
Wesly 重新編輯於 2007-08-02 11:35:51, 註解 無‧
系統時間:2024-05-07 7:55:19
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!