阅读:3965回复:11
MapX5.0的数据绑定问题
<P>我的SQL Server中有一个表,包含X,Y坐标信息。我希望通过ADO将此表的数据邦定到Datasets中,生成临时新的点图层。如何实现。</P>
|
|
1楼#
发布于:2004-07-27 17:22
<P>我觉得你可以直接读坐标,然后绘制新图层了</P>
|
|
|
2楼#
发布于:2004-07-27 17:56
<P>我现在是这样取出x,y坐标,绘制新图层,呵呵,想探讨一下直接绑定。</P>
|
|
3楼#
发布于:2004-07-30 14:17
<P>很简单</P><P>mapx有例子说明</P><P>是vb的</P><P>不过如果在c#下可能麻烦一些</P>
|
|
4楼#
发布于:2004-07-30 19:57
<P>下面是简单的例子,测试过的!供你参考!</P><P> Dim BindLayerObject As New MapXLib.BindLayer</P><P> Dim flds As New MapXLib.Fields
Dim conn As New ADODB.Connection Dim rst As New ADODB.Recordset Dim connstring As String Dim sqlstr As String </P><P> Dim ds As MapXLib.Dataset ' Get the recordset to map</P><P> ' MapStats Access database</P><P> ' Has Longitude, Latitude columns</P><P> connstring = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa" _ ; ";Initial Catalog=BGGMCarDriverInfo;Data Source=bossygis" conn.Open connstring</P><P> sqlstr = "select * from US_Cust" rst.CursorLocation = adUseClient rst.Open sqlstr, conn, adOpenStatic, adLockOptimistic</P><P> rst.MoveLast</P><P> Debug.Print "Record Set has " ; rst.RecordCount ; " records."</P><P> ' Fill in the Bindlayer object</P><P> BindLayerObject.layername = "US Customers" 'Name of new layer</P><P> BindLayerObject.RefColumn1 = "X" ' "Longitude"</P><P> ' Use Column number (one'based!) or Column name</P><P> BindLayerObject.RefColumn2 = "Y" ' "Latitude"</P><P> BindLayerObject.LayerType = miBindLayerTypeXY BindLayerObject.FileSpec = App.Path ; "\map\US Customers" ; ".tab" 'Type for X/Y binding</P><P> Debug.Print "Finished setting up Bind Layer" If Dir(App.Path ; "\map\US Customers.*") <> "" Then Kill (App.Path ; "\map\US Customers.*") Set ds = Map1.DataSets.Add(miDataSetADO, rst, "testname", "City", , BindLayerObject)</P><P> Debug.Print "Finished adding dataset" Dim ftrs As MapXLib.Features</P><P> rst.Close </P> |
|
5楼#
发布于:2004-08-24 11:43
在DELPHI下有例子程序么
|
|
6楼#
发布于:2004-08-25 23:14
C#的绑定如何实现?
<P>有没有人用C#实现过数据库的绑定?能否给出具体的代码来。现在发现,用C#+MapX开发真是一件剧痛苦的事情。明明书上讲的很清楚,自己也很明白,可在C#里就是实现不了。也不知道是MapX对C#的支持不好,还是我没有写对代码。哪位高手发发善心,给出些C#的代码出来。我都快要给折磨死了</P> |
|
7楼#
发布于:2004-09-25 12:27
有没有用VC +MAPXj,实现SQL与ADO连接的???
<P>long fieldcount=0;
void zjgisView::OnToolUsed(short ToolNum,double X1,double Y1,double X2,double Y2,double Distance,BOOL Shift,BOOL Ctrl,BOOL* EnableDefault) { CString str; CMapXPoint pt; CMapXFeatures fs; CMapXFeature f; pt.CreateDispatch(pt.GetClsid()); pt.Set(X1,Y1); str.Format("Tool=%d,[%f,%f],[%f,%f],dist=%f,%s,%s\n",ToolNum,X1,Y1,X2,Y2,Distance,(Shift)? "Shift":" ",(Ctrl)? "Ctrl-": " "); TRACE(str);</P> <P> SetRedraw(false); if(ToolNum==MYTOOL_INFO) { dlg.m_ctrList.ResetContent(); try { if(m_ctrlMapX.GetDatasets().GetCount()==0) { BSTR ColName; VARIANT sd; CMapXLayer layer; layer =m_ctrlMapX.GetLayers().Item(1); sd.vt = VT_DISPATCH; sd.pdispVal = layer.m_lpDispatch; sd.pdispVal->AddRef(); CString strLayername=m_ctrlMapX.GetLayers().Item(1).GetName(); // dataset =m_ctrlMapX.GetDatasets().Add(miDataSetLayer,sd,strLayername); CString sql=_T("SELECT * FROM 光点分布"); pRs->Open((_variant_t)sql,(IDispatch*)pConn,adOpenDynamic,adLockOptimistic,adCmdText); pRs->GetFields()->Item[long(0)]->get_Name(;ColName); dataset =layer.GetDatasets().Add(miDataSetADO,(_variant_t)(IDispatch*)pRs,(char*)_bstr_t(ColName),false); fieldcount=dataset.GetFields().GetCount(); }</P> <P> fs=m_ctrlMapX.GetLayers().Item(1).SearchAtPoint(pt); if(fs.GetCount()!=1) { return; }</P> <P> f=fs.Item(1);</P> <P> COleVariant vRow; COleVariant vVal; </P> <P> vRow.vt=VT_DISPATCH; vRow.pdispVal=f.m_lpDispatch; vRow.pdispVal->AddRef();</P> <P> CString strtemp; for(long i=1;i<=fieldcount;i++) { strtemp=dataset.GetFields().Item(i).GetName(); strtemp+=_T(":");</P> <P> vVal=dataset.GetValue(vRow,COleVariant(i)); if(vVal.vt!=VT_NULL) { vVal.ChangeType(VT_BSTR); strtemp+=vVal.bstrVal; } dlg.m_ctrList.AddString((LPCTSTR)strtemp);</P> <P> }</P> <P> dlg.UpdateData(false); dlg.ShowWindow(SW_SHOW); } catch(COleDispatchException *e) { e->ReportError(); e->Delete(); }</P> <P> catch(COleException *e) { e->ReportError(); e->Delete(); } }</P> <P> SetRedraw(true);</P> <P>} </P> <P>); dataset =layer.GetDatasets().Add(miDataSetADO,(_variant_t)(IDispatch*)pRs,(char*)_bstr_t(ColName),false); 能运行,但是弹出"operation is not allow on this datasets collection"</P> |
|
8楼#
发布于:2004-09-27 10:05
<P>楼上的说:我现在是这样取出x,y坐标,绘制新图层,呵呵,想探讨一下直接绑定。</P><P>请问这个怎么实现,我想看看源代码可以么?</P>
|
|
9楼#
发布于:2005-09-11 20:42
我来看一下
|
|
上一页
下一页