如何将DataGrid中显示的数据库数据打印出来

如何将DataGrid中显示的数据库数据打印出来,第1张

直接用sql处理就行了

if exists (select from dbosysobjects where id = object_id(N'[dbo][p_exporttb]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)

drop procedure [dbo][p_exporttb]

GO

create proc p_exporttb

@sqlstr varchar(8000), --查询语句,如果查询语句中使用了order by ,请加上top 100 percent

@path nvarchar(1000), --文件存放目录

@fname nvarchar(250), --文件名

@sheetname varchar(250)='' --要创建的工作表名,默认为文件名

as

declare @err int,@src nvarchar(255),@desc nvarchar(255),@out int

declare @obj int,@constr nvarchar(1000),@sql varchar(8000),@fdlist varchar(8000)

--参数检测

if isnull(@fname,'')='' set @fname='tempxls'

if isnull(@sheetname,'')='' set @sheetname=replace(@fname,'','#')

--检查文件是否已经存在

if right(@path,1)<>'\' set @path=@path+'\'

create table #tb(a bit,b bit,c bit)

set @sql=@path+@fname

insert into #tb exec masterxp_fileexist @sql

--数据库创建语句

set @sql=@path+@fname

if exists(select 1 from #tb where a=1)

set @constr='DRIVER={Microsoft Excel Driver (xls)};DSN='''';READONLY=FALSE'

+';CREATE_DB="'+@sql+'";DBQ='+@sql

else

set @constr='Provider=MicrosoftJetOLEDB40;Extended Properties="Excel 80;HDR=YES'

+';DATABASE='+@sql+'"'

--连接数据库

exec @err=sp_oacreate 'adodbconnection',@obj out

if @err<>0 goto lberr

exec @err=sp_oamethod @obj,'open',null,@constr

if @err<>0 goto lberr

--创建表的SQL

declare @tbname sysname

set @tbname='##tmp_'+convert(varchar(38),newid())

set @sql='select into ['+@tbname+'] from('+@sqlstr+') a'

exec(@sql)

在 SQL 中,可以使用转义字符 '' 来输出特殊字符,包括 '\n' 和 '\t' 等。例如,要在控制台中输出字符串 "Hello\nWorld",可以使用以下 SQL 语句:

sqlCopy codeSELECT 'Hello\nWorld';

在这个示例中,使用单引号 ' ' 包含字符串 "Hello\nWorld",并使用转义字符 '' 来表示换行符 '\n'。当执行这个 SQL 语句时,会在控制台中输出字符串 "Hello" 和 "World" 之间带有换行符的文本。

类似地,要在控制台中输出字符串 "Hello\sWorld",可以使用以下 SQL 语句:

sqlCopy codeSELECT 'Hello\\sWorld';

在这个示例中,同样使用单引号 ' ' 包含字符串 "Hello\sWorld",并使用两个连续的反斜杠 '\' 来表示转义字符 ''。当执行这个 SQL 语句时,会在控制台中输出字符串 "Hello\sWorld"。

需要注意的是,不同的数据库可能对转义字符的支持和处理方式略有不同,在实际开发中需要根据具体的数据库和环境进行调整和测试。

我说得可能会烦琐一点,只是怕说得不够明白,但 *** 作起来其实会很简单,在第一次把格式设定好后,每个月就没什么工作了

假设你的工资表数据库在sheet1,另加两个空表sheet2和sheet3

假设sheet1的表头在第1行,数据从A列到P列,在sheet2的A1单元格输入公式:“=sheet1!A1”,然后向右拖动公式至P1,然后复印第一行,粘贴到第二行。这时,sheet2的第1行和第2行就把sheet1的表头和第一行数据引用过来了。

在sheet2的第3行A3里输入公式:“=A$1”,然后向右拖动公式至P3(这里千万要注意在1前面加“$”)

选择A2:P3,把鼠标放在右下角出现黑色十字的时候往下拉(这个 *** 作就是把公式往下拉),有没有出现让你惊喜的东西?但是别高兴太早,仔细看看你会发现这里只是引用了行号为双数的数据。因为比如在第2行的单元格A2的公式是:“=sheet1!A2”,当把公式下拉的时候,第3行放的是表头,而第4行的公式就会变成:“=sheet1!A4”,而sheet1里的第3行的数据没有被引用,因此你还要做sheet3,步骤是一样的,只是把第二行的公式改动一下,比如在A2里输入公式:“sheet1!A3

”这里就会把sheet1里行号是单数的数据引用过来了

大功告成!看看能不能解决你的问题?

你需通过VB的打包程序,生成一个安装包,将此安装程序将你的应用程序安装于WIN2000机器,它同时会将所涉及的OCX文件安装于系统你的第一个问题是WIN2000系统缺少MSDATGRDOCX文件或未注册

第二问题楼上已作回答

第三问题数据打印输出:

VB下数据报表打印输出方法有多种,一是通过自己的设计和编程完成报表打印输出。二是通过MS OFFICE实现报表打印输出。三是应用数据报表设计器的报表打印输出。本人经常使用第一种方法,它具有根据需要灵活应用的特点,但需编写程序。下附代码,第一段代码定义基本变量,第二段代码定义打印函数,第三段代码是具体打印代码,含数据转换。第四段代码是窗体加载代码,具体连接数据库和打印代码根据你所涉及的数据要求进行修改。

Option Explicit

Private n As Integer

Private m As Integer

Private zh_dm(10) As Double

Private dy_dm(3000, 10) As Variant

Private zsl As Integer

Private y As Integer

Private x As Integer

Private i As Integer

Private k As Integer

Private p As Integer

Private pa As Integer

Private j As Integer

Private txt As String

Private fnt As Integer

Private dd As Variant

Public Function prnt(x As Variant, y As Variant, fnt As Variant, txt0 As Variant)

PrinterCurrentX = x

PrinterCurrentY = y

PrinterFontSize = fnt

PrinterPrint txt0

End Function

Private Sub cmdPrint_Click()

Adodc1RecordsetMoveFirst

For i = 0 To zsl - 1

For j = 0 To 7

dy_dm(i, j) = Adodc1Recordset(j)

Next j

Adodc1RecordsetMoveNext

Next i

'确定页数

k = Int(zsl / 80)'80为每页行数

If k - zsl / 80 < 0 Then

k = k + 1

End If

fnt = 8

For p = 0 To k - 1

pa = p + 1

y = 300

x = 4500

txt = "机物料库存"

dd = prnt(x, y, fnt, txt)

x = 8500

txt = "第" & p + 1 & "页"

dd = prnt(x, y, fnt, txt)

y = 500

x = 600

txt = "备件代码"

dd = prnt(x, y, fnt, txt)

x = 1500

txt = "备件名称"

dd = prnt(x, y, fnt, txt)

x = 3500

txt = "备件规格"

dd = prnt(x, y, fnt, txt)

x = 5500

txt = "进口计算机号"

dd = prnt(x, y, fnt, txt)

x = 7500

txt = "最低储备量"

dd = prnt(x, y, fnt, txt)

x = 9000

txt = "库存量"

dd = prnt(x, y, fnt, txt)

For i = 0 + p 80 To 79 + p 80

y = 700 + 180 (i - p 80)

x = 600

txt = dy_dm(i, 1)

dd = prnt(x, y, fnt, txt)

x = 1500

txt = dy_dm(i, 2)

dd = prnt(x, y, fnt, txt)

x = 3500

txt = dy_dm(i, 3)

dd = prnt(x, y, fnt, txt)

x = 5500

txt = dy_dm(i, 4)

dd = prnt(x, y, fnt, txt)

x = 7500

txt = dy_dm(i, 5)

dd = prnt(x, y, fnt, txt)

x = 9000

txt = dy_dm(i, 6)

dd = prnt(x, y, fnt, txt)

If Int(i / 10) - i / 10 = 0 Then

PrinterLine (500, 695 + (i - p 80) 180)-(10000, 695 + (i - p 80) 180)

End If

Next i

If zsl - p 80 > 80 Then

PrinterLine (500, 695 + 180 80)-(10000, 695 + 180 80)

PrinterNewPage

End If

Next p

PrinterEndDoc ' 打印完成。

Cls

End Sub

Private Sub Form_Load()

Adodc1ConnectionString = "Provider=MSDASQL1;Persist Security Info=False;Data Source=jwl_dbf"

Adodc1RecordSource = "select csjs_dm,cs备件代码,cs备件名称,cs备件规格,cs进口计算机号,cs最低库存量,sl结存数量,sl结存金额,sl结存单价,sl类别代码 from JWCK_BM as cs,jwl_jiec as sl" & _

" where cs备件代码 = sl备件代码" & " and cs备件代码>" & "''" & " order by sl类别代码,sl备件代码"

Adodc1Refresh

DataGrid1Refresh

zsl = Adodc1RecordsetRecordCount

Adodc3ConnectionString = "Provider=MSDASQL1;Persist Security Info=False;Data Source=jwl_dbf"

Adodc3RecordSource = "select sum(结存金额) as hj from jwl_jiec"

Adodc3Refresh

End Sub

条码软件支持多种数据库类型,你可以根据自己的需求导入所需的数据库,然后调用即可批量打印标签,这里以导入TXT文本为例,步骤如下:

现在印刷行业中,批量生成可变内容已经是众多厂家都在使用的一种方法,一般来说可变效果都是使用数据库导入的方式实现的,那么对于很多刚刚接触软件的客户可能对于数据库不太了解,其实如果您使用的是条码软件,可以直接将您的Excel或者TXT作为数据库导入软件就可以直接实现可变效果了, *** 作也是非常简单,下面我们就可以详细看一下其 *** 作步骤:

首先,我们可以先将数据保存在TXT中,TXT中内容需要时每项内容竖向排列,每项内容之间可以用逗号分隔也可以空格等:

下面我们开始将TXT数据导入中琅软件看下详细 *** 作方法:

1、打开条码软件,先根据提示设置和打印机中纸张相符的纸张及布局参数。

2、点击上方工具栏中的数据库设置图标,然后点击“添加-TXT文本数据源(文件)”,在d出窗口中点击“浏览”选择需要导入的文件,然后点击“测试连接”核对数据是否正确:

从上图记录总数和样本数据中可以看到,记录总数是正确的,但是样本数据不对,两个数据没有分隔开,这时可以点击上方“分隔符号”位置,由于我们的数据是空格分开的,分隔符中可以选择自定义,然后在后面输入框中,输入个空格“ ”,再次点击测试连接,核对样本数据正确后,点击“添加-关闭”即可。

3、添加标签内容内容:

固定内容:条码软件中固定内容可使用手动输入的方法添加,在画布上添加内容时可先点击左侧工具栏中“A”图标,然后在画布上绘制普通文本,并双击普通文本,在“图形属性-数据源”下方点击左侧修改,选择手动输入,然后输入文字内容,并点击编辑即可。

可变内容:添加方法与添加固定内容类似,在数据源中点击修改,选择数据库导入,然后在选择对应字段列内容导入,然后再点击“编辑-确定”即可。-

第二个可变内容可用相同方法添加,添加后,即可点击打印预览,查看所有数据生成的可变数据标签内容。

以上就是关于如何将DataGrid中显示的数据库数据打印出来全部的内容,包括:如何将DataGrid中显示的数据库数据打印出来、数据库中如何在控制台打印字符串\n\s、如何将EXCEL工资表数据库打印成带有表头的工资条等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10145748.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存