搜索
您的当前位置:首页正文

delphi操作SQL+ACCESS数据库

来源:尚佳旅游分享网


unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, xmldom, XMLIntf, msxmldom, XMLDoc, ComCtrls, DB,

DBTables, Mask, DBCtrls, Grids, DBGrids, ADODB, ExtCtrls, inifiles ;

type

TForm1 = class(TForm)

Button1: TButton;

XMLDocument1: TXMLDocument;

ListView1: TListView;

Button2: TButton;

number: TEdit;

Label1: TLabel;

Memo1: TMemo;

Edit2: TEdit;

Label2: TLabel;

Label3: TLabel;

ComboBox1: TComboBox;

Edit4: TEdit;

Label4: TLabel;

Button3: TButton;

Label5: TLabel;

Edit1: TEdit;

Label6: TLabel;

Edit6: TEdit;

ListBox1: TListBox;

ListBox2: TListBox;

Label7: TLabel;

ListView2: TListView;

Label8: TLabel;

Edit3: TEdit;

Button4: TButton;

Label9: TLabel;

Edit8: TEdit;

Edit9: TEdit;

Edit10: TEdit;

OpenDialog1: TOpenDialog;

Label10: TLabel;

Label11: TLabel;

Timer1: TTimer;

Button5: TButton;

Button6: TButton;

ADOConnection2: TADOConnection;

ADOQuery1: TADOQuery;

ADOConnection1: TADOConnection;

ADOQuery2: TADOQuery;

Button7: TButton;

procedure Button1Click(Sender: TObject);

procedure AddNewAttribute(ANode :IXMLNode; AValue :WideString);

procedure ComboBox1Change(Sender: TObject);

procedure Button3Click(Sender: TObject);

ALastName, AName,

procedure Button4Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Timer1Timer(Sender: TObject);

procedure numberKeyPress(Sender: TObject; var Key: Char);

procedure Button5Click(Sender: TObject);

procedure Button7Click(Sender: TObject);

procedure Button6Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

myinifile:TInifile;

implementation

uses unit2;

{$R *.dfm}

//==================================================================//

function GetStringCN(Source:string):string;

var

i:integer;

begin

delete(Source,1,11); {固定的格式:销售出库---}

i:=Length(Source);

while i>0 do

begin

if ByteType(Source,i) <> mbTrailByte then

begin

delete(Source,i,1);

dec(i);

end else

dec(i,2);

end;

Result:=Source;

end;

//======================================================//

//==================================================================//

function GetStringremark(Source:string):string;

begin

delete(Source,1,11); {固定的格式:销售出库---}

Result:=Source;

end;

//======================================================//

//==================================================================//

function Getsale(Source:string):string;

begin

delete(Source,1,18); {固定的格式:SalesWareHouseOut_}

//delete(Source,26,30); {固定的格式:SalesWareHouseOut_}

delete(Source,8,12); {固定的格式:SalesWareHouseOut_}

Result:=Source;

end;

//======================================================//

//function TestDll(i:integer):integer;stdcall; external 'TXTClass.dll';

function GetString(tStr,sStr,eStr :string;CheckCase :Boolean = True):string;

var

sPos,ePos :integer;

begin

Result := '';

if CheckCase then

sPos := Pos(sStr,tStr)

else

sPos := Pos(LowerCase(sStr),LowerCase(tStr));

if sPos > 0 then

tStr := Copy(tStr,sPos + Length(sStr),Length(tStr) - sPos - Length(sStr) + 1);

if CheckCase then

ePos := Pos(eStr,tStr)

else

ePos := Pos(LowerCase(eStr),LowerCase(tStr));

if ePos > 0 then

Result := Copy(tStr,1,ePos - 1)

else

Result := tStr;

end;

procedure TForm1.AddNewAttribute(ANode :IXMLNode; ALastName, AName, AValue :WideString);

var

index :Integer;

begin

index := ANode.AttributeNodes.IndexOf(ALastName);

if index > -1 then

ANode.AttributeNodes.Insert(index, ntAttribute))

XMLDocument1.CreateNode(AName,

else

ANode.AttributeNodes.Add(XMLDocument1.CreateNode(AName, ntAttribute));

ANode.SetAttribute(AName, AValue);

end;

procedure SaveUTF8File(fName, fText :string);

var

tmpFile, s :string;

f :TFileStream;

const

FileHead = #$EF#$BB#$BF;

begin

tmpFile := ExtractFilePath(fName) + ChangeFileExt(ExtractFileName(fName), '') + '_tmp' + ExtractFileExt(fName);

s := AnsiToUtf8(fText);

f := TFileStream.Create(tmpFile, fmCreate);

try

f.Write(FileHead[1], Length(FileHead));

f.Write(s[1], Length(s));

except

end;

FreeAndNil(f);

DeleteFile(fName);

RenameFile(tmpFile, fName);

end;

procedure TForm1.Button1Click(Sender: TObject);

var

Root, pNode, cNode :IXMLNode;

begin

//Memo1.Lines.Clear;

Memo1.Lines.LoadFromFile(''+edit4.Text+'');

ListView2.Items.Clear;

XMLDocument1.LoadFromFile(edit4.Text);

Root := XMLDocument1.DocumentElement;

pNode := Root.ChildNodes.First;

if (pNode <> nil) and (pNode.NodeName = 'Events') then

begin

pNode := pNode.ChildNodes.First;

if (pNode <> nil) and (pNode.NodeName = 'Event') then

begin

pNode := pNode.ChildNodes.First;

if (pNode <> nil) and (pNode.NodeName = 'DataField') then

begin

cNode := pNode.ChildNodes.First;

while cNode <> nil do

begin

if cNode.NodeName = 'Data' then

begin

AddNewAttribute(cNode, 'Actor', 'ToCorpID', Edit6.Text);

with ListView2.Items.Add do

begin

Caption := (cNode.Attributes['Code']);

SubItems.Add(cNode.Attributes['CorpOrderID']);

end;

end;

cNode := cNode.NextSibling;

end;

end;

end;

pNode := pNode.NextSibling;

end;

SaveUTF8File(Edit4.Text, XMLDocument1.XML.Text);

end;

procedure TForm1.ComboBox1Change(Sender: TObject);

var

dir:string;

sql:string; //定义字符串

sql1:string; //定义字符串

begin

getdir(0,dir); //获取路径

if ComboBox1.Text='销售出库' then begin

Edit3.Text:='SalesWareHouseOut_' end else if

(ComboBox1.Text='退货入库') or (ComboBox1.Text='销后退回') Edit3.Text:='ReturnWareHouseIn_' end else if

then begin

ComboBox1.Text='采购入库'then begin

Edit3.Text:='PurchaseWareHouseIn_' end else if

ComboBox1.Text='采购退回'then begin

Edit3.Text:='PurchaseWareHouseOut_' end ;

ADOConnection1.ConnectionString :='FILE NAME='+dir+'\\godos.udl';

ADOConnection1.Provider :=dir+'\\godos.udl';

ADOConnection1.Connected := true;

ADOConnection1.LoginPrompt := false;

//////////////////////////////////////////////////////////////

sql:='select BillDate, Number, CustName,BillName from VSel_OutInEditForm where'

+' IsNull(Verify,0)=1 and IsNull(Review,0)=1 and isnull(IsDelete,0)=0 '

+'and Number'+' =''' + trim(number.Text) + '''';

ADOQuery2.Close;

ADOQuery2.SQL.Clear;

ADOQuery2.SQL.Add(sql);

ADOQuery2.Open;

ADOQuery2.First;

if ADOQuery2.RecordCount > 0 then

begin

// edit10.Text:=GetStringremark(query1.fieldbyname('Remark').AsString); //过滤后的内容

// Edit1.Text:=GetStringCN(query1.fieldbyname('Remark').AsString);

// Edit10.Text:=Query1.fieldbyname('CustName').AsString;

Edit10.Text:=ADOQuery2.fieldbyname('CustName').AsString;

Edit1.Text:=ADOQuery2.fieldbyname('CustName').AsString;

Edit8.Text:=ADOQuery2.fieldbyname('Number').AsString;

Edit9.Text:=ADOQuery2.fieldbyname('BillName').AsString;

end;

ADOQuery2.Next;

//ADOQuery2.Close;

ADOConnection1.Connected := false;

sql1:='SELECT top 1 khid from ''%'+Edit1.text+'%''' ;

ADOQuery1.Close;

ADOQuery1.SQL.Clear;

ADOQuery1.SQL.Add(sql1) ;

ADOQuery1.Open;

ADOQuery1.First;

//while not ADOQuery2.Eof do

if ADOQuery1.RecordCount > 0 then

begin

Customers where like

khmc

//TempItem.SubItems.Add(ADOQuery1.Fields[i].AsString);

edit6.Text:=ADOQuery1.fieldbyname('khid').AsString;

end;

Button1.Enabled:=true;

ADOQuery1.Next;

// Edit6.Text:=Query3.fieldbyname('yaojianID').AsString;

// ADOQuery1.Close;

//edit4.Text:=Edit2.Text+Edit3.Text+number.Text+'.xml';

edit4.Text:=Edit2.Text+Edit3.Text+Edit8.Text+'.xml';

Button1.Enabled:=true;

end;

procedure TForm1.Button3Click(Sender: TObject);

var

filename:string;

begin

filename:=ExtractFilePath(paramstr(0))+'godos.ini';

myinifile:=TInifile.Create(filename);

OpenDialog1.Execute;

//edit2.Text:=OpenDialog1.GetNamePath;

edit2.Text:=ExtractFilePath(OpenDialog1.FileName);

///写入设置参数

myinifile.writestring('程序参数','路径',ExtractFilePath(OpenDialog1.FileName));

myinifile.Destroy;

end;

procedure TForm1.Button4Click(Sender: TObject);

var

tls: TStringList;

FindFileData: TWIN32FindData;

// FindFileData:string*11;

FindHanle: THandle;

FilePath, FileExt: String;

Filename:string;

begin

Filename:=ExtractFilePath(paramstr(0))+'godos.ini';

myinifile:=TInifile.Create(filename);

edit2.Text:= myinifile.readstring('程序参数','路径','');

ListView1.Clear;

ListView2.Clear;

ListBox1.Items.Clear;

ListBox2.Items.Clear;

tls := TStringList.Create;

try

FillChar(FindFileData, SizeOf(TWIN32FindData), 0); //文件大小

FilePath := edit2.Text; //目录

FileExt := '.xml'; //扩展名

// FindHanle := FindFirstFile(PAnsiChar(FilePath + '*' + FileExt), FindFileData);

FindHanle := FindFirstFile(PAnsiChar(FilePath +'SalesWareHouseOut_'+ '*' + FileExt), FindFileData);

if FindHanle <> INVALID_HANDLE_VALUE then begin

repeat

if (FindFileData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) <> FILE_ATTRIBUTE_DIRECTORY then begin

//过滤掉属性为“目录”,即“文件”

// tls.Add(FindFileData.cFileName);

// tls.Add(GetSale( FindFileData.cFileName)+chr(13) );

ListView1.Items.Add.Caption:=GetSale( FindFileData.cFileName)+chr(13); //显示到listview中

end;

until Not FindNextFile(FindHanle, FindFileData) ;

windows.FindClose(FindHanle);

end;

//ListView1.Items.Add.Caption:=(tls.Text+chr(13));

// ListView1.Items.Add.Caption:=tls.Text ;

form1.Label10.Caption:='待处理:'+inttostr(ListView1.Items.Count) +'条数据! ';

Button2.Enabled:=true;

finally

tls.Free;

end;

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

if ListView1.Items.Count=0 then

begin

Button2.Enabled:=false;

Button1.Enabled:=false;

timer1.Enabled:=false;

Button7.Visible:=false;

form1.Label10.Caption:='待处理:'+inttostr(ListView1.Items.Count) +'条数据! ';

Button1.Click;

end

else

begin

listview1.SetFocus; // 选择第一条

//listview1.Items[i].Selected := True;// 选择第一条

listview1.Items[Listview1.Items.Count -1].Selected := True; //选择最后一条

// listview1.Items[Listview1.Items.Count -(Listview1.Items.Count

-1)].Selected := True;

Timer1.Enabled:=true;

Button7.Visible:=true;

Button7.Height:=76;

Button7.Left:=592;

Button7.Top:=37;

Button7.Width:=75;

Button2.Visible:=false;

end ;

end;

procedure TForm1.Timer1Timer(Sender: TObject);

var

i:integer;

// i,IstrIndex:Integer;

// SstrList,SextractList,SsubstrList:TStringList;

//c :char;

begin

For i:=0 to ListView1.Items.Count-1 Do

If ListView1.Items[i].Selected then //i=ListView1.Selected.index

begin

number.Text:=listview1.Items[i].Caption;

ListView1.Items.Delete(i); //删除当前选中行

form1.Label10.Caption:='待处理:'+inttostr(ListView1.Items.Count) +'条数据! ';

Button1.Click;

Button2.Click;

if edit6.Text='' then begin

ListBox1.Items.Add(number.Text+' end ;

if POS('公司',edit10.Text)>0 then ListBox2.Items.Add(number.Text+' end

end;

end;

'+edit9.Text+' begin

'+edit9.Text+' '+edit10.Text)

'+edit10.Text)

procedure TForm1.numberKeyPress(Sender: TObject; var Key: Char);

begin

if Not (key in ['0'..'9']) then

key := #0;

end;

procedure TForm1.Button5Click(Sender: TObject);

begin

form2.Show;

end;

procedure TForm1.Button7Click(Sender: TObject);

begin

Timer1.Enabled:=false;

Button2.Visible:=true;

Button7.Visible:=false;

end;

procedure TForm1.Button6Click(Sender: TObject);

var

dir:string;

begin

getdir(0,dir); //获取路径

if ListBox1.Items.Count<>0 then

begin

ListBox1.Items.SaveToFile(dir+'未录入数据.txt');

end;

if ListBox2.Items.Count<>0 then

begin

ListBox2.Items.SaveToFile(dir+'未录入数据公司.txt');

end;

end;

end.

因篇幅问题不能全部显示,请点此查看更多更全内容

Top