procedure TFormPatientTemplate.ButtonSaveClick(Sender: TObject);
var
FileStream: TFileStream; {to load the odt file}
BlobStream: TStream;//TBlobStream; {to save to the blob}
SQLString : string;
arr : OleVariant;
memo : TMemoryStream;
i :Integer;
begin
if Trim(Edit1.Text) = '' then
begin
ShowMessage('请输入病历名称!');
Edit1.SetFocus;
end
else
begin
NsoControl1.SaveToStream(arr);
memo := OleVariantToMemoryStream(arr);
i := memo.Size;
if memo.Size = 0 then
exit;
{Create a BlobStream for the field}
if iRecordID = 0 then //新建的病历
begin
with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add( 'insert into 病人病历信息表 (病人ID,模板ID,病历名称,病历内容,最后修改日期) values(:1,:2,:3,:Blob,:5)');
parameters.ParamByName('1').Value := iPatientID;
parameters.ParamByName('2').Value := iTemplateID;
parameters.ParamByName('3').Value := Trim(Edit1.Text);
parameters.ParamByName('Blob').LoadFromStream(memo,ftBlob);
parameters.ParamByName('5').Value := now;
execsql;
end;
memo.Free;
end
else //修改的病历
.......
end;
这个地方由于插入的字段有一个是Blob字段所以觉得有些特殊,拿出来作日后参考
更新数据库的代码:
procedure TFormPatientTemplate.Button1Click(Sender: TObject);
var
xmlString : string;
xml_document:IXMLDOMDocument;
newctrl_list : IXMLDOMNodeList;
newctrl_node : IXMLDOMNode;
newLen : Integer;
i : Integer;
strtemp:string;
strName : string;
strMarry :string;
strSQL :string;
begin
xml_document := CoDOMDocument.create;
xml_document.loadXML(NsoControl1.GetAllSectAndNewCtrlContentByCurrentDoc('0,1,2','0,1',1,1));
newctrl_list := xml_document.getElementsByTagName('NewCtrl');
newlen := newctrl_list.length;
for i := 0 to newlen-1 do
begin
newctrl_node := newctrl_list.item[i];
strtemp := newctrl_node.childNodes.item[0].text;
if strtemp = '6' then
strName := newctrl_node.childNodes.item[1].text;
if strtemp = '23' then
strMarry := newctrl_node.childNodes.item[1].text;
if ( strName <> '') and ( strMarry <> '') then
break;
end;
strSQL := 'update 病人信息表 set 婚姻状况 = '' +strMarry +''where 姓名 = ''+strName + ''';
with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('update 病人信息表 set 婚姻状况 = :strMarry where 姓名 = :strName ');
parameters.ParamByName('strMarry').Value := strMarry;
parameters.ParamByName('strName').Value := strName;
execsql;
end;
end;
这个地方拿出来是因为,这个SQL语句在开始写的时候不知道:strMarry这种表示,这种表示的确很明智,单独拿出来赋值,免去字符串的拼凑(delphi是''表示字符串的)
var
FileStream: TFileStream; {to load the odt file}
BlobStream: TStream;//TBlobStream; {to save to the blob}
SQLString : string;
arr : OleVariant;
memo : TMemoryStream;
i :Integer;
begin
if Trim(Edit1.Text) = '' then
begin
ShowMessage('请输入病历名称!');
Edit1.SetFocus;
end
else
begin
NsoControl1.SaveToStream(arr);
memo := OleVariantToMemoryStream(arr);
i := memo.Size;
if memo.Size = 0 then
exit;
{Create a BlobStream for the field}
if iRecordID = 0 then //新建的病历
begin
with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add( 'insert into 病人病历信息表 (病人ID,模板ID,病历名称,病历内容,最后修改日期) values(:1,:2,:3,:Blob,:5)');
parameters.ParamByName('1').Value := iPatientID;
parameters.ParamByName('2').Value := iTemplateID;
parameters.ParamByName('3').Value := Trim(Edit1.Text);
parameters.ParamByName('Blob').LoadFromStream(memo,ftBlob);
parameters.ParamByName('5').Value := now;
execsql;
end;
memo.Free;
end
else //修改的病历
.......
end;
这个地方由于插入的字段有一个是Blob字段所以觉得有些特殊,拿出来作日后参考
更新数据库的代码:
procedure TFormPatientTemplate.Button1Click(Sender: TObject);
var
xmlString : string;
xml_document:IXMLDOMDocument;
newctrl_list : IXMLDOMNodeList;
newctrl_node : IXMLDOMNode;
newLen : Integer;
i : Integer;
strtemp:string;
strName : string;
strMarry :string;
strSQL :string;
begin
xml_document := CoDOMDocument.create;
xml_document.loadXML(NsoControl1.GetAllSectAndNewCtrlContentByCurrentDoc('0,1,2','0,1',1,1));
newctrl_list := xml_document.getElementsByTagName('NewCtrl');
newlen := newctrl_list.length;
for i := 0 to newlen-1 do
begin
newctrl_node := newctrl_list.item[i];
strtemp := newctrl_node.childNodes.item[0].text;
if strtemp = '6' then
strName := newctrl_node.childNodes.item[1].text;
if strtemp = '23' then
strMarry := newctrl_node.childNodes.item[1].text;
if ( strName <> '') and ( strMarry <> '') then
break;
end;
strSQL := 'update 病人信息表 set 婚姻状况 = '' +strMarry +''where 姓名 = ''+strName + ''';
with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('update 病人信息表 set 婚姻状况 = :strMarry where 姓名 = :strName ');
parameters.ParamByName('strMarry').Value := strMarry;
parameters.ParamByName('strName').Value := strName;
execsql;
end;
end;
这个地方拿出来是因为,这个SQL语句在开始写的时候不知道:strMarry这种表示,这种表示的确很明智,单独拿出来赋值,免去字符串的拼凑(delphi是''表示字符串的)