当前位置:主页>销售管理软件> 列表

怎样用控件检测数据库内的表的所有记录为空 在线等 谢谢

销售管理软件版1楼: 我想把XML文件导入到数据库对应的表内,现在如果表已经存在且字段都有的话可以导入,可是我想如果表不存在我要先创建表,这个可是做,问题是怎样知道每个表对应的字段呢 ,这就要从XML文件中分析各个字段 然后创建 这个谁能帮我呢 谢谢

2楼: 是不是我表达不明确 怎么没有人回 ,要是感觉我写的有问题 堪布明白我提的问题 可以提 我在线呢 如excel进销存模板

3楼: 我看看,以前做数据库转换的。

4楼: 我看看,以前做数据库转换的。??
能举一下例子 把主要的几句代码发上来好吗 谢谢

5楼: type // DataBase type; not used not used not used not used not used
Tprovider = (ORA = 1, MSSERVER = 2, VFP = 3, ACCESS = 4, IBASE = 5, MYSQL = 6, DB2 = 7);

function CreateTbSql(tbName: string; DataSet: TDataSet; Index: Integer; ProviderType: Tprovider): string;
var
i: Integer;
primary,
sqlStr,
field,
fields: string;
begin
// CONSTRAINT "TEST_C0013243" PRIMARY KEY("CR_ID")


// USING INDEX)
case ProviderType of
MSSERVER :
begin
primary := '' CONSTRAINT [PK_'' + tbName + ''_'' + intToStr(SecondOf(NOW)) + ''] '' +
'' PRIMARY KEY CLUSTERED (['' + DataSet.Fields[INDEX].FieldName + '']) ON [PRIMARY]) ON [PRIMARY]'';
sqlStr := ''if object_id('''''' + ''dbo.'' + tbName + '''''')is not null drop table ''+ tbName + #13 + ''CREATE TABLE '' + tbName + ''( '';
end;
ORA :
begin
primary := '', CONSTRAINT "PK_'' + tbName + ''_'' + intToStr(SecondOf(now)) + ''" '' +
'' PRIMARY KEY ("'' + DataSet.Fields[index].FieldName + ''") USING INDEX )'';
sqlStr := ''CREATE TABLE '' + tbName + ''( '';
end;
end;

for i := 0 to DataSet.FieldCount -1 do
begin
field := DataSet.Fields[i].FieldName;
// size := DataSet.Fields[i].Size;
case DataSet.Fields[i].DataType of
ftBlob, ftGraphic : IF ProviderType = MSSERVER THEN
fields := fields + '' '' + field + '' IMAGE, '';
ftOraBlob, ftOraClob:
begin
if DataSet.Fields[i].DataType = ftOraBlob then
fields := fields + '' '' + field + '' BLOB, ''
else
fields := fields + '' '' + field + '' CLOB, '';
END;
ftBoolean, ftBytes:
begin
case ProviderType of
ORA: fields := fields + '' '' + field + '' NUMBER(1), '';
MSSERVER: fields := fields + '' '' + field + '' BIT, '';
end;
end;
ftDate, ftTime, ftDateTime, ftTimeStamp:
begin
case ProviderType of
ORA: fields := fields + '' '' + field + '' DATE, '';
MSSERVER: fields := fields + '' '' + field + '' DATETIME, '';
end;
end;
ftFloat, ftCurrency, ftBCD:
begin
case ProviderType of
ORA: fields := fields + '' '' + field + '' NUMBER( 12, 4), '';
MSSERVER: fields := fields + '' '' + field + '' NUMERIC(12, 4), '';
end;
end;
ftSmallint, ftInteger, ftWord:
begin
case ProviderType of
ORA: fields := fields + '' '' + field + '' NUMBER(12), '';
MSSERVER: fields := fields + '' '' + field + '' INT, '';
end;
end;
ftString, ftFixedChar, ftWideString :
begin
case ProviderType of
ORA: fields := fields + '' '' + field + '' VARCHAR('' + intToStr(DataSet.Fields[i].Size) + ''), '';
MSSERVER: fields := fields + '' '' + field + '' VARCHAR('' + intToStr(DataSet.Fields[i].Size) + ''), '';
end;
end;
ftMemo, ftFmtMemo :
begin
case ProviderType of
ORA: fields := fields + '' '' + field + '' LONG, '';
MSSERVER: fields := fields + '' '' + field + '' ntext, '';
end;
end;
end; // CASE
end;

sqlStr := sqlstr + copy(fields, 1, length(fields) - 2) + primary;
result := sqlStr;
end;

procedure TForm1.createTbClick(Sender: TObject);
var
provider: Tprovider;
begin
if not CheckBox1.Checked then
begin
if ListBox_source.ItemIndex = -1 then
begin
showmessage(''Please selected Index column!'');
ListBox_source.ItemIndex := 0;
Exit;
end;
end else ListBox_source.ItemIndex := 0;

if PTYPE.ItemIndex = 0 then
provider := ORA
ELSE
provider := MSSERVER;
if (tb_source.Active) and(con_target.Connected) then
begin
qy_target.Close;
qy_target.SQL.clear;
qy_target.SQL.Text :=CreateTbSql(sourceCombox.text, tb_source, ListBox_source.ItemIndex, provider);
Memo1.Text := qy_target.SQL.Text;
if not CheckBox1.Checked then
if application.MessageBox(''Is continue?'', ''System Hint!'', MB_YESNO + MB_APPLMODAL) = IDYES then
begin
try
if not CheckBox1.Checked then
begin
qy_target.ExecSQL
end
else
begin
tb_target.Close;
tb_target.TableName := sourceCombox.Text;
tb_target.Open;
targetDs.DataSet := tb_target;
end;
WriteIniMemoList(Memo1.Text);
showmessage(''Execute Sql successful!'');
//qy_target.SQL.SaveToFile( ''.sql'');
except
on e: exception do
begin
showmessage(''Execute Sql unsuccessful , but have error: '' + #13 + e.Message)
end;
end;
end;
end;
end;

6楼: 用DELPHI实现SQL SERVER 2000的数据的备份和还原还有数据的上传!
数据上传的要求:
也就是说,从A机器上的数据库中有条件的备份一些数据出来(不是所有的数据啊)追加倒B机器的数据库里!
例如某个表里用字段(CARRY)来记录某条记录是否上传过,如果没有上传过,就将他备份,如果上传过,就不需要备份!然后将备份的的记录追加倒B数据库中!
fengxinglang@eyou.com
QQ 76612973

你说的给我发的邮件呢!