Infoview ODBC "Unable to connect: incorrect log on parameters. "

文章讨论了在Windows Server 2008环境中,使用Crystal Reports 2008开发的报表无法在Infoview上正常运行,遇到Unable to connect: incorrect logon parameters.错误的问题。通过对比ODBC配置,发现关键在于服务器端ODBC使用了64-bit DataSource,导致问题发生。最终,通过更换为32-bit DataSource解决了部署问题。

Crystal Reports Server安装于Windows Server 2008上。

在本地用Crystal Reports 2008开发完报表后,部署到Infoview上,却总是得到"Unable to connect: incorrect log on parameters. "的错误。

对比ODBC的配置后,没有发现异常。

其后发现Server端的ODBC是使用64-bit的Data Source(ODBC)创建,随后使用32-bit的Data Source(ODBC)重新创建后,报表成功跑通。


<template> <view class="container"> <!-- 资产清单列表页面 --> <u-navbar id="navber" title="资产清单" :autoBack="true" :fixed="true" :placeholder="true"> <!-- @leftClick="back" --> <template #right> <view class="navberFilters" @click="toScanModal"> <up-icon name="scan" color="#46C880" size="26"></up-icon> </view> <view class="navberFilters" @click="openFilter"> <text class="text">筛选</text> <up-icon name="arrow-down-fill" color="#666666" size="10"></up-icon> </view> </template> </u-navbar> <view class="search"> <common-search-input v-model="keyword" @search="handleSearch" placeholder="搜索资产名称"></common-search-input> </view> <view> <view class="list" v-for="(item,index) in list" :key="index" @click="goDetail(item)"> <view class="conten-box"> <view class="title-box"> <view class="status"> <span class="isIdle" v-if="item.assetStatus == 1">空闲</span> <span class="isUser" v-if="item.assetStatus == 2">在用</span> <span class="isDis" v-if="item.assetStatus == 3">已处置</span> </view> <view class="title">{{item.assetName}}</view> </view> <view class="info-box"> <view class="box-margin"> 资产编码:{{item.assetCode}} </view> <view > 资产分类:{{item.assetCategoryName}} </view> </view> </view> <view class="image-box"> <image :src="item.imageUrl || 'https://dfs.hndyls.com:1443/hndy-static-resource/2025/2025-07/2025-07-31/5bceaf24-3305-4479-906b-ef868056f27c.png'" class="image"> </image> </view> </view> <u-loadmore v-if="list.length>0" :status="status" style="padding-bottom:10px"/> <u-loading-page :loading="loading" fontSize="32rpx" style="position: absolute"></u-loading-page> </view> <view style="margin-top: 20%;" v-if="!list.length"> <u-empty mode="list" text="暂无数据" icon="https://dfs.hndyls.com:1443/hndy-static-resource/2025/2025-03/2025-03-12/20250312105719_empty.png"> </u-empty> </view> <!-- 查询条件 --> <filterPopup ref="filterPopup" :isMy="true" @change="changeQuery" /> <!-- 扫描组件 --> <scanModal ref="scanModalRef" :continuousScan="true" :callBack="scanCallBack" @confirm="scanConfirm"> </scanModal> </view> </template> <script> import scanModal from "@/pages/modulePage/asset/components/scan/scanModal.vue"; import filterPopup from './components/filterPopup.vue' import { assetPrefixApi } from '@/api/index.js'; export default { components: { scanModal, filterPopup }, data() { return { pageSize:10, pageNum:1, status: 'loadmore', total: 0, list: [], keyword: '', loading: true, queryForm:{ assetStatus:null, markStatus:null, assetCodeList:[], assetCategoryId:null, storageLocationId:null, useUserNameList:[], useOrgId:null, useSubjectId:null, useDepartmentId:null, affiliatedInstitutionId:null, affiliatedSubjectId:null, adminName:null, assetSourceType:null, brand:null, supplierName:null, specificationModel:null, serialNumber:null, remarks:null, type:null, purchaseDateStart:null, purchaseDateEnd:null, maintenanceExpirationDateStart:null, maintenanceExpirationDateEnd:null, }, assetList:{ assetCategoryList:[], assetCategoryData:[], positionList:[], sourceList:[], unitList:[], assinstitutional:[], assentityList:[] } } }, onShow() { this.pageNum = 1 this.getList(); this.getAssetCategory() this.getPosition() this.getSource() this.getUnit() this.getInstitution() this.getMainBody() // 获取机构主体关联关系 this.getOrgSubjectList(); }, onReachBottom() { if (this.status != "loadmore") return; this.status = 'loading'; this.pageNum++; this.getList(); }, methods: { // 列表 async getList(){ let params = { userId: parseInt(uni.getStorageSync("userinfo").id), pageSize: this.pageSize, pageNum: this.pageNum, assetName: this.keyword, //资产名称 ...this.queryForm } if(params.purchaseDateStart){ params.purchaseDateStart = params.purchaseDateStart + ' 00:00:00' } if(params.purchaseDateEnd){ params.purchaseDateEnd = params.purchaseDateEnd + ' 23:59:59' } if(params.maintenanceExpirationDateStart){ params.maintenanceExpirationDateStart = params.maintenanceExpirationDateStart + ' 00:00:00' } if(params.maintenanceExpirationDateEnd){ params.maintenanceExpirationDateEnd = params.maintenanceExpirationDateEnd + ' 23:59:59' } let data = { path: `/api/inventory/page`, params: JSON.stringify(params), method: 'POST' } if(this.pageNum == 1){ this.list = []; this.loading = true; } const res = await assetPrefixApi.assetPrefixUrl(data); if (res.code == 0) { // uni.$u.toast(res.msg); this.total = res.data.totalCount if (res && res.data && Array.isArray(res.data.dataList)) { let list = []; res.data.dataList.forEach(item => { if(item.imageUrl) { item.imageUrlList = item.imageUrl.split(',') } const json = { assetCategoryName:item.assetCategoryName, assetCode:item.assetCode, assetStatus:item.assetStatus, assetStatusName:item.assetStatusName, id:item.id, imageUrl:item.imageUrl ? item.imageUrlList[0] : '', assetName:item.assetName } list.push(json) }) this.list.push(...list); } if(this.list.length < this.total){ this.status = "loadmore" } else { this.status = "nomore"; } this.loading = false; } else { uni.$u.toast(res.msg); } }, goDetail(item) { uni.navigateTo({ url: `/pages/modulePage/asset/assetInventory/model/infoView?id=${item.id}`, }) }, // 获取资产分类 async getAssetCategory(){ let params = { userId: parseInt(uni.getStorageSync("userinfo").id), } let data = { path: `/api/category/list`, params: JSON.stringify(params), method: 'GET' } const res = await assetPrefixApi.assetPrefixUrl(data); if(res.code == 0) { this.assetList.assetCategoryList = this.formatToTree(res.data) this.assetList.assetCategoryData = res.data uni.setStorageSync("asset_list", this.assetList) } }, formatToTree(ary, pid) { return ary.filter((item) => pid == null ? item.parentId == 0 : item.parentId == pid ).map((item) => { item.name = item.categoryName item.children = this.formatToTree(ary, item.id); return item; }); }, // 存放地点 async getPosition(){ let params = { userId: parseInt(uni.getStorageSync("userinfo").id), pageSize: 999, pageNum: 1, } let data = { path: `/api/position/list/page`, params: JSON.stringify(params), method: 'POST' } const res = await assetPrefixApi.assetPrefixUrl(data); if(res.code == 0) { if(res.data.dataList && res.data.dataList.length > 0) { res.data.dataList.forEach( item => { item.name = item.position item.id = Number(item.id) }) this.assetList.positionList = res.data.dataList uni.setStorageSync("asset_list", this.assetList) } } }, // 资产来源 async getSource(){ let params = { userId: parseInt(uni.getStorageSync("userinfo").id), } let data = { path: `/api/dictInfo/queryDetailList/?dictCode=SOURCE_ASSETS`, params: JSON.stringify(params), method: 'GET' } const res = await assetPrefixApi.assetPrefixUrl(data); if(res.code == 0) { if(res.data && res.data.length > 0) { res.data.forEach( item => { item.name = item.itemLabel item.id = Number(item.id) }) this.assetList.sourceList = res.data uni.setStorageSync("asset_list", this.assetList) } } }, // 计量单位 async getUnit(){ let params = { userId: parseInt(uni.getStorageSync("userinfo").id), } let data = { path: `/api/dictInfo/queryDetailList/?dictCode=UNIT_MEASUREMENT`, params: JSON.stringify(params), method: 'GET' } const res = await assetPrefixApi.assetPrefixUrl(data); if(res.code == 0) { if(res.data && res.data.length > 0) { res.data.forEach( item => { item.name = item.itemLabel item.id = Number(item.id) }) this.assetList.unitList = res.data uni.setStorageSync("asset_list", this.assetList) } } }, // 单个查询机构 dictInfo/queryDetailList/ASS_INSTITUTIONAL async getInstitution(){ let params = { userId: parseInt(uni.getStorageSync("userinfo").id), } let data = { path: `/api/userCenter/dictInfo/queryDetailList/ASS_INSTITUTIONAL`, params: JSON.stringify(params), method: 'GET' } const res = await assetPrefixApi.assetPrefixUrl(data); if(res.code == 0) { this.assetList.assinstitutional = res.data uni.setStorageSync("asset_list", this.assetList) } }, // 单个查询主体 dictInfo/queryDetailList/OFFICIAL_SEAL_ORG async getMainBody(){ let params = { userId: parseInt(uni.getStorageSync("userinfo").id), } let data1 = { path: `/api/userCenter/dictInfo/queryDetailList/OFFICIAL_SEAL_ORG`, params: JSON.stringify(params), method: 'GET' } const res = await assetPrefixApi.assetPrefixUrl(data1); if(res.code == 0) { if(res.data &&res.data.length > 0) { res.data.forEach( item => { item.name = item.remarks }) } this.assetList.assentityList = res.data uni.setStorageSync("asset_list", this.assetList) } }, // 打开扫描组件 toScanModal() { this.$refs.scanModalRef.show(true); }, // 手机二维码扫描后的回调 scanCallBack(res) { this.showScanModal = false; if (!res.result) return true; // 从二维码中获取资产编码 let assetCode = res.result.split('@')[1]; console.log('assetCode',assetCode) uni.navigateTo({ url: `/pages/modulePage/asset/assetInventory/model/infoView?id=${assetCode}`, }) // 返回true,扫描组件会继续后续操作,返回false,扫描组件会终止操作 return false; }, // 手持设备扫描后的操作 scanConfirm(list) { console.log('资产清单不需要这个功能,只需要手机扫码功能就OK:', list); }, // 筛选 openFilter(){ this.$refs.filterPopup.open(this.queryForm) }, // 返回的查询条件 changeQuery(queryForm) { if(queryForm?.assetCodeList && queryForm.assetCodeList.length > 0) { queryForm.assetCodeList = [queryForm.assetCodeList] } this.queryForm = {...queryForm} this.handleSearch() }, handleReceivedParams(params){ this.$refs.filterPopup.getOrganization(params) }, handleSearch() { this.list = []; this.pageNum = 1; this.getList(); }, // 获取机构主体关联关系 async getOrgSubjectList() { let params = { userId: parseInt(uni.getStorageSync("userinfo").id), } let data1 = { path: `/api/org/getOrgSubjectList`, params: JSON.stringify(params), method: 'GET' } const res = await assetPrefixApi.assetPrefixUrl(data1); if(res.code == 0) { this.assetList.OrgSubjectList = res.data uni.setStorageSync("asset_list", this.assetList); } } } } </script> <style scoped lang="scss"> .search{ border-top: 0.03125rem solid #efefef; } .isIdle{ background: #dcf7ee; color: #139d6f; } .isUser{ background: #d3dafd; color: #2A4EFF; } .isDis{ background: #e1e1e1; color: #857F7F; } .search { width: 750rpx; justify-content: center; position: sticky; z-index: 970; top: 44px; background: #fff; } .list{ background-color: #ffff; margin: 0.625rem; border-radius: 0.375rem; padding: 0.9375rem; display:flex; .title-box{ display:flex; .status{ span{ padding: 0.2rem 0.7rem; border-radius: 0.5rem; font-size: 0.7rem; } } .title{ flex:1; padding: 0 0.4rem; font-size: 0.9rem; } } .image-box{ flex: 1; text-align: right; .image{ width: 3.75rem; height: 3.75rem; border-radius: 0.375rem } } .info-box{ color:#999999; .box-margin{ margin:0.5rem 0 0.2rem 0 } } } </style> <!-- 固定class="search",在class="list"数据滚动时,class="search"不要滚动到头部,遮住了id="navber" -->
最新发布
09-05
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值