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

EXCEL-->ACCESS

尚未結案
shie
一般會員


發表:7
回覆:10
積分:3
註冊:2003-09-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-01-05 09:44:38 IP:218.166.xxx.xxx 未訂閱
請問各位大大: 目前一直被煩中謝謝幫忙:EXCEL中的資料格式不同就會遺漏存入ACCESS中或是當在那兒例如:第一列[A1,2]:='1 第二列[A1,3]:=5 <===二個只少了單引號我存入ACCESS時就會發生上述的現象~~~使用各位大大的函數OpenXlsAsADO()不好意思 感謝了
terrychen
尊榮會員


發表:90
回覆:794
積分:501
註冊:2003-05-01

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-01-05 10:23:00 IP:61.221.xxx.xxx 未訂閱
您好: 下列是小弟由EXCEL轉入MSSQL的方式,參考看看 有沒有單引號,應該都可以,至於ACESS我便沒試過
procedure TTransin.SpeedButton2Click(Sender: TObject);
Var
  SQLStr,Filename: String;
  xlsApp, WorkBook: Variant;
  i,j,k:integer;
begin
  if OpenDialog1.Execute then
  begin
    Try
      Application.ProcessMessages;
      xlsApp:= CreateOleObject('Excel.Application');
      WorkBook:= CreateOleobject('Excel.Sheet');
    Except
      ShowMessage('請先安裝 Microsoft Excel 再執行本程式!');
      WorkBook.Close;         //關閉EXCEL
      xlsApp.Quit;            //退出Excel Application
      xlsApp:=Unassigned;     //free VARIANT
      Exit;
    End;
    WorkBook:= xlsApp.workBooks.Open(OpenDialog1.FileName);
    WorkBook.sheets[1].Select;        Filename:= copy(ExtractFileName(OpenDialog1.FileName),1,3);
    SQLStr:= 'Select * from Hc200 where HcNo like ''' Filename '%' '''';
    Hc200.Close;
    Hc200.SQL.Clear;
    Hc200.SQL.Add(SQLStr);
    Hc200.Open;        j:= Hc200.RecordCount;
    Gauge1.MinValue:= 0;
    Gauge1.MaxValue:= j;
    Gauge1.Progress:= 0;
    k:= 0;
    for i := 1 to j 1 do
    begin
      if Trim(xlsApp.Cells[i,1]) <> '' then
      begin
      SQLStr:='UpDate Hc200 Set HBsAg = ''' Trim(xlsApp.Cells[i,2]) '''' ',' 
              '                 HBsAb  = ''' Trim(xlsApp.Cells[i,3]) '''' ',' 
              '                 HBsAge = ''' Trim(xlsApp.Cells[i,4]) '''' ',' 
              '                 Ant = ''' Trim(xlsApp.Cells[i,5]) '''' ',' 
              '                 RPR = ''' Trim(xlsApp.Cells[i,6]) '''' ',' 
              '                 Typing = ''' Trim(xlsApp.Cells[i,7]) '''' 
              ' where HcNo = '''  Trim(xlsApp.Cells[i,1]) '''';
      Hc200.Close;
      Hc200.SQL.Clear;
      Hc200.SQL.Add(SQLStr);
      Hc200.ExecSQL;
      Gauge1.Progress:= i;
      inc(k);
      end;
    end;
    WorkBook.Close;         //關閉EXCEL
    xlsApp.Quit;            //退出Excel Application
    xlsApp:=Unassigned;     //free VARIANT
    Gauge1.Progress:= 0;
    Showmessage('共轉入B肝資料' inttostr(k) '筆');
  end;
end;
發表人 - Terrychen 於 2004/01/05 10:39:32
shie
一般會員


發表:7
回覆:10
積分:3
註冊:2003-09-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-01-09 13:47:52 IP:218.166.xxx.xxx 未訂閱
請問各位大大: 目前一直被煩中謝謝幫忙:EXCEL中的資料格式不同就會遺漏存入ACCESS中或是當在那兒例如:第一列[A1,2]:='1 第二列[A1,3]:=5 <===二個只少了單引號我存入ACCESS時就會發生上述的現象~~~使用各位大大的函數OpenXlsAsADO()不好意思 感謝了 感謝:我測試了一個小結果就是 第一列[A1,2]:='1 第二列[A1,3]:=5 把第一列[A1,2]:='1 內容值改為第一列[A1,2]:=1 (去掉單引號)就可以了 不知是不是資料內容是要相同呢?但實際上資料是會有不相同地方的可以決絕嗎`~ 謝謝各位大大了~~
terrychen
尊榮會員


發表:90
回覆:794
積分:501
註冊:2003-05-01

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-01-09 14:03:27 IP:61.221.xxx.xxx 未訂閱
您好: 用上述的方法不行ㄇ,記得以前用時不管有沒有『'』都可以進去 若不行,用你的方法在進資料庫之前將『'』濾掉    
Function TForm1.Flt_SP(Input: String): String;                // 濾 '
var
  i:Integer;
  OutStr:String;
begin
  OutStr:='';
  for i := 1 to Length(Input) do
  begin
    if Input[i] <> '''' then OutStr:=OutStr Input[i];
  end;
  Result:=OutStr;
end;
發表人 - Terrychen 於 2004/01/09 14:15:40
系統時間:2024-05-19 10:01:06
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!