DELPHI 数据库(基本编辑操作)
DelphiListView基本用法大全[delphi]
![DelphiListView基本用法大全[delphi]](https://img.taocdn.com/s3/m/7c3e969370fe910ef12d2af90242a8956becaa39.png)
DelphiListView基本⽤法⼤全[delphi] Delphi ListView基本⽤法⼤全//增加项或列(字段)ListView1.Clear;ListView1.Columns.Clear;ListView1.Columns.Add;ListView1.Columns.Add;ListView1.Columns.Add;ListView1.Columns.Items[0].Caption:='id';ListView1.Columns.Items[1].Caption:='type';ListView1.Columns.Items[2].Caption:='title';ListView1.Columns.Items[2].Width:=300;Listview1.ViewStyle:=vsreport;Listview1.GridLines:=true; //注:此处代码也可以直接在可视化编辑器中完成,也可写成以下这样beginwith listview1 dobeginColumns.Add;Columns.Add;Columns.Add;ViewStyle:=vsreport;GridLines:=true;columns.items[0].caption:='进程名';columns.items[1].caption:='进程ID';columns.items[2].caption:='进程⽂件路径';Columns.Items[0].Width:=100;Columns.Items[1].Width:=100;Columns.Items[2].Width:=150;endend;//增加记录with listview1.items.add dobegincaption:='1212';subitems.add('hh1');subitems.add('hh2');end;//删除listview1.items.delete(0);//从数据库表⾥读取数据写⼊ListviewvarTitem:Tlistitem; //此处⼀定要预定义临时记录存储变量.beginListView1.Items.Clear;with adoquery1 dobeginclose;sql.Clear;sql.Add('select spmc,jg,sl from kcxs');Open;ListView1.Items.Clear;while not eof dobeginTitem:=ListView1.Items.add;Titem.Caption:=FieldByName('spmc').Value;Titem.SubItems.Add(FieldByName('sl').Value);Titem.SubItems.Add(FieldByName('jg').Value);next;//删除ListView1.DeleteSelected;//如何取得ListView中选中⾏的某⼀列的值procedure TForm1.Button2Click(Sender: TObject);beginShowMessage(ListView1.Selected.SubItems.Strings[1]); //返回选中⾏第三列中的值end;showMessage(listView1.Selected.Caption); //返回选中⾏第⼀列的值.第1列的值: -->>> ListView1.Selected.Caption第i列的值(i>1):-->>> ListView1.Selected.SubItems.Strings[i]ListView1.Items.Item[1].SubItems.GetText); //取得listview某⾏某列的值Edit2.Text := listview1.Items[i].SubItems.strings[0]; //读第i⾏第2列返回选中⾏所有⼦列值.是以回车符分开的,你还要从中剥离出来你要的⼦列的值。
DELPHI5编程介绍

DBGrid组件
DBGrid:显示的时候每行显示一条记录, 每列对于数据表一个字段。 属性: 1、DataSource:设置与那个DataSurce 组件连接,间接地与Table或Query组件 连接了。
DBEdit组件
DBEdit:用来显示数据表某个字段地信息。 属性: 1、DataSource:设置与那个DataSurce组 件连接。 2、DataField:要显示的字段名称。
Table组件:进行数据库的显示、修改等 操作。 Query组件:进行数据库的显示、修改等 操作。 DataSource组件:连接访问组件和控制 组件。 StoredProc组件:用来执行后台存储过 程
Table组件
Table组件通过BDE来访问数据库(可以是本 地、或远端数据库)。 属性: 1、DataBaseNameL:用于指定要访问的数据库, 可以是数据库的名称、别买或存放数据库的路 径。 2、TableName:指定要与组件连接的数据表。 3、Action:用于决定TableName指定的表是 否被激活 4、ReadOnly:设置成True时,只能以浏览的 方式查看数据表,不能进行修改。
文本框
按钮Buttom组件
按钮:用来控制程序的运行、停止、退 出等操作。 属性: 1、Caption:设置按钮显示的名称。 2、Enabled:设置按钮是否可以操作 (其他的控制也又有这个属性,意义相 同)。
按钮
成组框GroupBox组件
将窗体上功能相似的组件放在一起(可 以是不同类型的组件),以便在成组框 相同的标题下显的更有层次。 属性: 1、Caption:这是主要的属性,设置组 框名称。
编程基础-定义常量
常量在说明时就被赋予了一个值,在程序 执行过程中是不可改变的。 格式:Const <常量名>=<常量值> const NUM = 342; hi5"; //字符串型 象变量一样,常量也有类型。不同的是,常 量其类型就是常量说明中其所代表的值的类型。 常量用“= " 表示两边的值是相等的。
Delphi表格控件DBGridEh应用实例3-编辑功能

Delphi表格控件DBGridEh应⽤实例3-编辑功能3. 编辑功能1) 多选TDBGridEh 允许在选定的区域上进⾏选择记录,列以及矩形区域等操作:允许多选会影响下⾯这些属性:Options 选项中的dgMultiSelect 属性- 设置是否允许多选。
Options 选项中的dghClearSelection 属性- 设置在⽤户移到下⼀个单元时是否清除已选记录。
Options 选项中的EdITActions属性-设置⽤户可以在已选记录上执⾏哪些操作(⽐如,拷贝,剪切,删除,粘贴,全选等)。
Options 选项中的AllowedSelections 属性-设置允许选定记录的类型(⽐如,⾏,列,矩形区域等)。
Options 选项中的Selection 属性-设置⼀个当前的多选状态,已选记录,列或矩形区域以及存取它们的属性和函数。
2) ⽂本多⾏显⽰Column.WordWrap 为True可以使数据⾏中⽂本多⾏显⽰。
如果⾏⾼>⽂本⾏,它就换⾏。
3) 显⽰备注字段设置DrawMemoText to True来显⽰⽂本式的备注字段。
.4) 如何让dbgrideh1显⽰数据时只显⽰两位⼩数DBGrideh1.Columns[0].DisplayFormat := '#.#0';5) 获得当前DBGridEh表中单元格的序号DBGridEh1.SelectedIndex6) 怎样在dbgridEh和Edit中显⽰⾦额的千分号1、dbrigeh.columns[0].DisplayFormat := ,0.002、2、adoquery1.fields[0].DisplayFormat := #,##0.003、都可以4、在保存之前,记得把','号全部replace 掉,5、tmpEdit.Text := StringReplace(tmpEdit.Text, ',', '', [rfReplaceAll]);6、tmpEdit.Text := StringReplace(tmpEdit.Text, ',', '', [rfReplaceAll]);7、在out 时调⽤函数⾃动加千分号8、tmpEdit.Text := FloatFormat(tmpEdit.Text);9、输出整型的10、function TTblRecordEditFrame.IntFormat(intValue: string): string;11、begin12、//13、if intValue = '' then14、Result := ''15、else17、intValue := StringReplace(intValue, ',', '', [rfReplaceAll]);18、intValue := StringReplace(intValue, ',', '', [rfReplaceAll]);19、Result := formatfloat('#,###,##0', StrToFloat(intValue));20、end;21、end;22、//格式化浮点数,加千分号,删除后边的023、function TTblRecordEditFrame.FloatFormat(floatValue: string): string;24、var25、decPart, intPart: string;26、i, j: Integer;27、numFormat: string;28、begin29、//30、if floatValue = '' then31、Result := ''32、else33、begin34、floatValue := StringReplace(floatValue, ',', '', [rfReplaceAll]);35、floatValue := StringReplace(floatValue, ',', '', [rfReplaceAll]);36、i := pos('.', floatValue);37、if i > 0 then //有⼩数点38、begin39、intPart := Copy(floatValue, 1, i - 1);40、decPart := copy(floatValue, i + 1, Length(floatValue));41、//从后边开始清除042、for j := Length(decPart) downto 1 do43、begin44、if decPart[j] = '0'45、then Delete(decPart, j, 1)46、else47、Break;48、end;49、end50、else //⽆⼩数点52、intPart := floatValue;53、decPart := '';54、end;55、if decPart <> '' then56、numformat := '#,###,##0.' + StringOfChar('0', Length(decPart))57、else58、numFormat := '#,###,##0';59、Result := formatfloat(numFormat, StrToFloat(intPart + '.' + decpart));60、end;7) 请问怎么才能使DBGridEh不滚动就能提交数据?可以在关闭窗⼝时,判断⼀下数据集状态,然后⾃动保存。
Delphi数据库开发完美教程 第3章 Delphi的语法基础

表3-2 函数 Abs(x) Addr(x) Chr(x) Length(x) Odd(x) Ord(x) Pred(x) Round(x) SizeOf(x) Succ(x) Swap(x)
可以在常量表达式中引用的标准函数 说 求x的绝对值 定义一个指向对象的指针 返回值为x的字符 求字符串x的长度 判断x是否为奇数 返回序数类型变量x的序数值 返回序数类型变量x的前一个值 把x四舍五入 返回x占用的字节数 返回序数类型变量x的后续值 交换16位整数的高位和低位 明
3.1.2 运算符
Object Pascal语言的运算符分为数学运算符、逻辑运算符、指针运算符、关 系运算符、字符串运算符、集合运算符、类运算符和@运算符。其中数学 运算符包括:+、-、*、/、div、mod。逻辑运算符包括:not、and、or、 xor、shl、shr。指针运算符包括;<、>、<=、>=。关系运算符包括:=、<> 、<=、>=、<、>。集合运算符包括:+、-、*、=、<>、<=、>=、in。类运算 符包括:as、in。 Microsoft
Microsoft
在使用标识符前,用户必须首先声明它们。Object Pascal语 言的编译器会自动检查标识符的类型以确保标识符的赋值 是正确的类型。 Object Pascal语言对标识符的定义有着明确的规定。标识符 不区分大小写,标识符只能以字母或下划线开头,标识符 中只有前255位有效,标识符中不能包含空格,标识符不能 使用Object Pascal语言的保留字,对不同对象中相同标识符 的成分必须使用“.”分隔表示所属关系。 保留字(Reserved Words)是由系统规定的、具有特定意义的 单词。在编程时不能被重新定义或另作他用。Object Pascal语 言规定的保留字在Delphi集成开发环境的代码编辑器中是以黑 体加粗显示的。这些保留字包括:and、array、as、
第12章 Delphi数据库程序设计

属性: 属性: Items,Style,DropDownCount 10.DBLookupListBox: 用于当用户要编辑、 用于当用户要编辑、修改数据库表中的当前记录的 指定字段时,使用该部件提供多个可选项, 指定字段时,使用该部件提供多个可选项,这个可 选项是从相关的其他数据库表中读去的, 选项是从相关的其他数据库表中读去的,以列表框 的形式提供给用户。 的形式提供给用户。 属性: 属性: ListSource, ListField, , , KeyField(要匹配的字段) (要匹配的字段) 11.DBLookupComboBox: 相当是把一个DBEdit部件与 部件与DBLookupListBox 相当是把一个 部件与 结合在一起
数据集刚打开时, 属性被默认为dsBrowse 数据集刚打开时,其State属性被默认为 属性被默认为
3.浏览记录 浏览记录
每个活动的数据集都有一个指针,指向当前记录。 每个活动的数据集都有一个指针,指向当前记录。很多对 数据集的操作,如编辑、插入和删除,都是针对当前记录。 数据集的操作,如编辑、插入和删除,都是针对当前记录。 应用程序要改变当前记录的位置, 应用程序要改变当前记录的位置,就需要将指针移动到相 应行。 应行。 CustADOTable1.First; st; CustADOTable1.Next; CustADOTable1.Prior; CustADOTable1.MoveBy(-2);
5.修改数据 修改数据
Edit:数据集进入编辑状态 数据集进入编辑状态 Append,Insert:插入记录 插入记录 Delete:删除记录 删除记录
第四节 字段对象 第四
当打开一个数据集的时候Delphi会自动生成动态 会自动生成动态 当打开一个数据集的时候 与数据类型相关的字段对象, 的、与数据类型相关的字段对象,也可以用字段 编辑器创建永久的字段的字段对象来代替动态的 字段对象。 字段对象。 一般来说, 一般来说,一个简单的字段组件来表示数据库字 段中一列的特征,如数据类型、 段中一列的特征,如数据类型、该字段的显示特 征等。 征等。
delphi 连接sqlite数据库的详细方法

delphi 连接sqlite数据库的详细方法Delphi连接SQLite数据库的详细方法Delphi是一种功能强大的集成开发环境(IDE),可以用于开发各种类型的应用程序,包括数据库应用程序。
在Delphi中,我们可以使用SQLite 数据库来储存和管理数据。
本文将介绍如何使用Delphi连接SQLite数据库并进行基本的数据操作。
下面是连接SQLite数据库的详细步骤:步骤1:准备工作首先,我们需要准备一些必要的工具和文件:1. Delphi IDE - 在电脑上安装并启动Delphi集成开发环境。
你可以从Embarcadero官方网站上下载Delphi的最新版本。
2. SQLite数据库文件- 从SQLite官方网站上下载并安装SQLite数据库,然后创建一个SQLite数据库文件(例如MyDatabase.db)。
3. Delphi SQLite组件- 在Delphi IDE中安装并配置SQLite连接组件。
你可以从第三方提供商(如ZeosLib,UniDAC等)或释放的Delphi版本中找到这些组件。
步骤2:创建Delphi项目在Delphi IDE中创建一个新项目。
选择“File”菜单中的“New”选项,并选择“VCL Forms Application”模板。
为项目指定一个合适的名称并保存。
步骤3:添加SQLite连接组件在项目中添加SQLite连接组件。
你可以通过菜单栏上的“Component”-> “Install Component”选项或直接通过命令窗口(Ctrl + Alt + C)安装组件。
确保已正确安装组件,并在IDE的面板上找到它们。
步骤4:设计用户界面在Delphi IDE的窗体设计器中设计用户界面。
你可以使用标签、编辑框、按钮等控件来构建一个简单的界面,用于展示数据库中的数据或进行数据操作。
步骤5:连接SQLite数据库在窗体的代码编辑器中,添加以下代码来连接SQLite数据库:uses添加SQLite组件的单元SQLiteTable3;vardb: TSQLiteDatabase;将以上代码添加到窗体的私有变量声明部分。
delphi数据库操作类
delphi数据库操作类unit DbHelper;interfaceuses Classes,DB, ADODB,SysUtils,UProcParameter;typeTDbHelper=classclass function GetANewCon(conString:string):TADOConnection;privateFAdoCon:TADOConnection;FConString:string;function GetAdoCon:TADOConnection;publicproperty AdoCon:TADOConnection read GetAdoCon;function OpenSql(Sql: String): TDataSet;procedure ExecSql(Sql: String);procedure ExecSqlTran(SqlList: TStringList);function IsExistsRec(Sql: String): Boolean;function GetFirstFieldAsInt(Sql: String): Integer;function GetFirstFieldAsStr(Sql: String): string;constructor Create(conString:string);reintroduce;destructor Destroy;override;function OpenProc(procName:string;procParams:TProcParameters):TDataSet;procedure ExecProc(procName: string; procParams: TProcParameters);end;implementation{ TDbHelper }constructor TDbHelper.Create(conString:string);begininherited Create;FConString:=conString;end;destructor TDbHelper.Destroy;begininherited Destroy;if Assigned(FAdoCon) then FreeAndNil(FAdoCon);end;function TDbHelper.GetAdoCon: TADOConnection;beginResult:=FAdoCon;if not Assigned(FAdoCon) thenFAdoCon:=TAdoConnection.Create(nil);if not FAdoCon.Connected thenbeginFAdoCon.ConnectionString:=FConString;FAdoCon.KeepConnection:=True;FAdoCon.LoginPrompt:=False;FAdoCon.Open;end;Result:=FAdoCon;end;class function TDbHelper.GetANewCon(conString: string): TADOConnection;beginResult:=TAdoConnection.Create(nil);Result.ConnectionString:=conString;Result.KeepConnection:=True;Result.LoginPrompt:=False;Result.Open;end;function TDbHelper.OpenSql(Sql: String): TDataSet;varAQuery:TAdoQuery;beginResult:=nil;AQuery:=TAdoQuery.Create(nil);AQuery.Connection:=GetAdoCon;AQuery.SQL.Text:=Sql;AQuery.Open;Result:=AQuery;end;procedure TDbHelper.ExecSql(Sql: String);varAQuery:TAdoQuery;beginAQuery:=TAdoQuery.Create(nil);tryAQuery.Connection:=GetAdoCon;AQuery.SQL.Text:=Sql;AQuery.ExecSQL;finallyAQuery.Close;FreeAndNil(AQuery);end;end;procedure TDbHelper.ExecSqlTran(SqlList: TStringList); varAQuery:TAdoQuery;Sql:String;i:Integer;beginAQuery:=TAdoQuery.Create(nil);tryAQuery.Connection:=GetAdoCon;AQuery.Connection.BeginTrans;tryfor i:=0to SqlList.Count-1dobeginSql:=SqlList.Strings[i];AQuery.SQL.Text:=Sql;AQuery.ExecSQL;AQuery.Close;end;mitTrans;exceptAQuery.Connection.RollbackTrans;end;finallyAQuery.Close;FreeAndNil(AQuery);end;end;function TDbHelper.IsExistsRec(Sql: String): Boolean; varAResSet:TDataSet;beginResult:=False;AResSet:=OpenSql(Sql);if AResSet<>nil thenbeginResult:=AResSet.RecordCount>0;AResSet.Close;FreeAndNil(AResSet);end;end;function TDbHelper.GetFirstFieldAsInt(Sql:String): Integer; varAQuery:TAdoQuery;beginResult:=-1;tryAQuery:=TAdoQuery.Create(nil);AQuery.Connection:=GetAdoCon;AQuery.SQL.Text:=Sql;AQuery.Open;if AQuery.RecordCount>0thenbeginResult:=AQuery.Fields.Fields[0].AsInteger;end;finallyif Assigned(AQuery) then FreeAndNil(AQuery);end;end;function TDbHelper.GetFirstFieldAsStr(Sql: String): String; varAQuery:TAdoQuery;beginResult:='';tryAQuery:=TAdoQuery.Create(nil);AQuery.Connection:=GetAdoCon;AQuery.SQL.Text:=Sql;AQuery.Open;if AQuery.RecordCount>0thenbeginResult:=AQuery.Fields.Fields[0].AsString;end;finallyif Assigned(AQuery) then FreeAndNil(AQuery);end;end;function TDbHelper.OpenProc(procName:string;procParams:TProcParameters):TDataSet;varaProc:TADOStoredProc;aParameter:TProcParameter;i:Integer;beginaProc:=TADOStoredProc.Create(nil);aProc.Connection:=GetAdoCon;aProc.ProcedureName:=procName;for i:=0to procParams.Count-1dobeginaParameter:=procParams.GetParameter(i);with aProc.Parameters.AddParameter dobeginName:=;DataType:=aParameter.DataType;Direction:=aParameter.Direction;if aParameter.Size<>0then Size:=aParameter.Size;Value:=aParameter.Value;end;end;aProc.Open;Result:=aProc;end;procedure TDbHelper.ExecProc(procName:string;procParams:TProcParameters);varaProc:TADOStoredProc;aParameter:TProcParameter;i:Integer;beginaProc:=TADOStoredProc.Create(nil);tryaProc.Connection:=GetAdoCon;aProc.ProcedureName:=procName;for i:=0to procParams.Count-1dobeginaParameter:=procParams.GetParameter(i);with aProc.Parameters.AddParameter dobeginName:=;DataType:=aParameter.DataType;Direction:=aParameter.Direction;if aParameter.Size<>0then Size:=aParameter.Size;Value:=aParameter.Value;end;end;aProc.ExecProc;for i:=0to procParams.Count-1dobeginaParameter:=procParams.GetParameter(i);if (aParameter.Direction=pdOutput) or (aParameter.Direction=pdInputOutput) or (aParameter.Direction=pdReturnValue) then beginaParameter.Value:=aProc.Parameters[i].Value;end;end;finallyFreeAndNil(aProc);end;end;end.。
DELPHI中操作ACCESS数据库
DELPHI中操作ACCESS数据库DELPHI中操作ACCESS数据库(建⽴.mdb⽂件,压缩数据库)以下代码在WIN2K,D6,MDAC2.6下测试通过,编译好的程序在WIN98第⼆版⽆ACCESS环境下运⾏成功.//声明连接字符串ConstSConnectionString = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;'+'Jet OLEDB:Database Password=%s;';//============================================================================= // Procedure: GetTempPathFileName// Author : ysai// Date : 2003-01-27// Arguments: (None)// Result : string//============================================================================= function GetTempPathFileName():string;//取得临时⽂件名varSPath,SFile:array [0..254] of char;beginGetTempPath(254,SPath);GetTempFileName(SPath,'~SM',0,SFile);result:=SFile;DeleteFile(result);end;//============================================================================= // Procedure: CreateAccessFile// Author : ysai// Date : 2003-01-27// Arguments: FileName:String;PassWord:string=''// Result : boolean//=============================================================================function CreateAccessFile(FileName:String;PassWord:string=''):boolean;//建⽴Access⽂件,如果⽂件存在则失败varSTempFileName:string;vCatalog:OleVariant;beginSTempFileName:=GetTempPathFileName;tryvCatalog:=CreateOleObject('ADOX.Catalog');vCatalog.Create(format(SConnectionString,[STempFileName,PassWord]));result:=CopyFile(PChar(STempFileName),PChar(FileName),True);DeleteFile(STempFileName);exceptresult:=false;end;end;//============================================================================= // Procedure: CompactDatabase// Author : ysai// Date : 2003-01-27// Arguments: AFileName,APassWord:string// Result : boolean//============================================================================= function CompactDatabase(AFileName,APassWord:string):boolean;//压缩与修复数据库,覆盖源⽂件varSTempFileName:string;vJE:OleVariant;beginSTempFileName:=GetTempPathFileName;tryvJE:=CreateOleObject('JRO.JetEngine');pactDatabase(format(SConnectionString,[AFileName,APassWord]),format(SConnectionString,[STempFileName,APassWord])); result:=CopyFile(PChar(STempFileName),PChar(AFileName),false); DeleteFile(STempFileName);exceptresult:=false;end;end;2.ACCESS中使⽤SQL语句应注意的地⽅及⼏点技巧以下SQL语句在ACCESS XP的查询中测试通过建表:Create Table Tab1 (ID Counter,Name string,Age integer,[Date] DateTime);技巧:⾃增字段⽤ Counter 声明.字段名为关键字的字段⽤⽅括号[]括起来,数字作为字段名也可⾏.建⽴索引:下⾯的语句在Tab1的Date列上建⽴可重复索引Create Index iDate ON Tab1 ([Date]);完成后ACCESS中字段Date索引属性显⽰为 - 有(有重复).下⾯的语句在Tab1的Name列上建⽴不可重复索引Create Unique Index iName ON Tab1 (Name);完成后ACCESS中字段Name索引属性显⽰为 - 有(⽆重复).下⾯的语句删除刚才建⽴的两个索引Drop Index iDate ON Tab1;Drop Index iName ON Tab1;ACCESS与SQLSERVER中的UPDATE语句对⽐:SQLSERVER中更新多表的UPDATE语句:UPDATE Tab1SET = FROM Tab1 a,Tab2 bWHERE a.ID = b.ID;同样功能的SQL语句在ACCESS中应该是UPDATE Tab1 a,Tab2 bSET = WHERE a.ID = b.ID;即:ACCESS中的UPDATE语句没有FROM⼦句,所有引⽤的表都列在UPDATE关键字后.上例中如果Tab2可以不是⼀个表,⽽是⼀个查询,例:UPDATE Tab1 a,(Select ID,Name From Tab2) bSET = WHERE a.ID = b.ID;访问多个不同的ACCESS数据库-在SQL中使⽤In⼦句:Select a.*,b.* From Tab1 a,Tab2 b In 'db2.mdb' Where a.ID=b.ID;上⾯的SQL语句查询出当前数据库中Tab1和db2.mdb(当前⽂件夹中)中Tab2以ID为关联的所有记录.缺点-外部数据库不能带密码.在ACCESS中访问其它ODBC数据源下例在ACCESS中查询SQLSERVER中的数据SELECT * FROM Tab1 IN [ODBC]<BR>[ODBC;Driver=SQLServer;UID=sa;PWD=;Server=127.0.0.1;DataBase=Demo;]外部数据源连接属性的完整参数是:[ODBC;DRIVER=driver;SERVER=server;DATABASE=database;UID=user;PWD=password;]其中的DRIVER=driver可以在注册表中的HKEY_LOCAL_MACHINESOFTWAREODBCODBCINST.INI中找到ACCESS⽀持⼦查询ACCESS⽀持外连接,但不包括完整外部联接,如⽀持 LEFT JOIN 或 RIGHT JOIN,但不⽀持FULL OUTER JOIN 或 FULL JOIN ACCESS中的⽇期查询注意:ACCESS中的⽇期时间分隔符是#⽽不是引号Select * From Tab1 Where [Date]>#2002-1-1#;在DELPHI中我这样⽤SQL.Add(Format('Select * From Tab1 Where [Date]>#%s#;',[DateToStr(Date)]));ACCESS中的字符串可以⽤双引号分隔,但SQLSERVER不认,所以为了迁移⽅便和兼容,建议⽤单引号作为字符串分隔符.在SQLSERVER中查询ACCESS数据库中的表SELECT * FROMOPENROWSET('Microsoft.Jet.OLEDB.4.0','c:youfile.mdb';'admin';'youpwd',youtabname)AS a以下SQL语句在ACCESS XP的查询中测试通过建表:Create Table Tab1 (ID Counter,Name string,Age integer,[Date] DateTime);技巧:⾃增字段⽤ Counter 声明.字段名为关键字的字段⽤⽅括号[]括起来,数字作为字段名也可⾏---本⽂章使⽤发布。
Delphi数据库编程教程图文版
二、如何写一个数据库程序 心铃非计算机专业科班出身�没学过软件工程等之类的课程�这里只能从经验来谈谈如
何编写一个数据库程序。当然这里的有些经验也适用写其他的程序。 第一、首先应做一个方案。也可以说是一个计划、大纲之类的东西吧�在方案中首先要
根据自己或客户的的需要把主要应具备的功能写清除、写详细�这是很最关键的�否则在设 计完成后发现有些功能由于事先没有考虑周到再重新设计将会很麻烦的�可能有些需增加的 功能容易补充�而有些可能由于没有留下接口等等会造成将原来的代码要做大量修改。其次� 列出需要的辅助功能和其他一些通用功能。比如�对电脑和数据库不熟悉的客户一般不会提 出数据库压缩、整理之类的功能�但我们在程序设计中应该考虑这些功能�还有如数据库备 份、恢复功能等�通用的一些功能如帮助文件、关于本程序等等�这些一般是任何软件都应 该有的。最后�将数据库结构构建出来。根据需要完成的功能�选择什么样的数据库�数据 库应有几个数据表�每个数据表应该具备多少字段�字段的类型、长度、是否允许空值�是 否建立索引等都要写Engine 的缩写�它是负责用户和数据库打交道的中间媒介。 事实上�应用程序是通过数据访问组件和 BDE 连接�再由 BDE 去访问数据库来完成对数据库 的操作的�并非直接操作 BDE。这样用户只需关心数据组件即可�不用去直接和 BDE 打交道。 数据库组件主要有数据访问组件和数据控制组件�它们和数据库的关系可用下面的示意图来 表示�用户←→数据控制组件←→数据访问组件←→BDE←→数据库。通过 BDE 几乎可以操 作目前所有类型的数据库。我们来简单了解一下常用的数据库组件。 �一�数据访问组件�Data Access Component�
第6章Delphi常用控件及基础编程
《Delphi数据库基础》
清华大学出版社 6.3 Win32控件及其编程应用 6.3.1顺序页控件(TabControl)
顺序页控件(TTabControl)是一个应用相当广泛的 windows控件,TTabControl控件能够为窗体添加标签供用户使 用,比较适合于外观不变而内容变化的情况。 组合框控件,“Win32”页上。
清华大学出版社 6.6.6复选框控件(CheckBox)
复选框按钮用于多选的情况,我们可以从一组复选框中选 择多个选项,而不象选项按钮那样只能选择一个。在实际的 windows程序中大量的接触到复选框控件。 复选框钮控件【CheckBox】 ,在“standard”页上。
6.6.7列表框控件(ListBox)
6.2.5分割条控件(Splitter)
Splitter控件为分割条控件,可以把窗体分隔成几个部门, 拖动Tsplitter可以改变各个部分的大小。 Splitter控件 ,在“Aditional”页上。 TSplitter控件的属性主要用于设置界面的显示效果,实现 界面各部分大小的动态调整。
《Delphi数据库基础》
《Delphi数据库基础》
清华大学出版社
6.3.7修饰条控件(TCoolBar)
修饰条控件(TCoolBar)又称为“酷条”也是工具条的一 种,用于位置可移动、大小可调节的控制。TCoolBar对象包含 的子控制放置TCoolBar对象的段上,每个段都是TCoolBand对 象。TTCoolBand和TTCoolBar之间的关系就和TtoolButton和 TtoolBar的关系一样。 修饰条控件 ,在“Win32”页上。
6.3.5日期时间控件(DateTimePicker)
DateTimePicker控件可以实现日期和时间的快速输入,并 且可以保证输入的规范性。在此我们推荐读者在程序设计时 与日期相关的输入使用DateTimePicker控件。 DateTimePicker在“Win32”页上, 《Delphi数据库基础》
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
五、数据库1(基本编辑操作)
步骤一:开始---程序---Borland Delphi 6---BDE---Object---New---OK(默认STANDARD)---PATH---设置为含有数据库文件的目录下。
步骤二:向Form1中添加Table组件(BDE组中),DatabaseName---STANDARD1(上一步创建的),TableName---Pza.DBF。
添加DataSource 组件(Data Access组中),DataSet---Table1。
添加DBGrid组件(Data Controls 组中)DataSource---DataSource1。
添加DBNavigator1组件(Data Controls 组中)DataSource---DataSource1。
向Form1中添加6个Button(Button1…Button6) , Caption依次为”添加”,”删除”,”修改”,”确定”,”取消”,”退出”
步骤三:
1.声明一个procedure (public后面一行):
procedure setstate(s:integer); //0:browse;1:edit or insert
定义这个procedure(implementation {$R *.dfm}后面一行):
procedure TForm1.setstate(s:integer);
begin
if s=0 then
begin
button1.Enabled:=True;
button2.Enabled:=True;
button3.Enabled:=True;
button4.Enabled:=False;
button5.Enabled:=False;
button6.Enabled:=True;
end
else
begin
button1.Enabled:=False;
button2.Enabled:=False;
button3.Enabled:=False;
button4.Enabled:=True;
button5.Enabled:=True;
button6.Enabled:=False;
end;
end;
2.定义变量x(implementation下面一行):
var x:integer;
3.打开Table(Form1---OnActivate) :
Table1.Open;
setstate(0);
4. Button1:
Table1.Append;
DBGrid1.SetFocus;
setstate(1);
Button2:
if MessageDLG('Delete?',mtwarning,[mbYes,mbNo],0)=mrYes then Table1.Delete;
Button3:
Table1.Edit;
DBGrid1.SetFocus;
setstate(1);
Button4:
Table1.Post;
setstate(0);
Button5:
Table1.Cancel;
setstate(0);
Button6:
Table1.Close;
Application.Terminate;
5. Datasource1---AutoEdit: false;。