Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
How to use BULK INSERT ?
Message
De
18/11/2004 11:47:44
Cetin Basoz
Engineerica Inc.
Izmir, Turquie
 
Information générale
Forum:
Visual FoxPro
Catégorie:
Client/serveur
Versions des environnements
Visual FoxPro:
VFP 8 SP1
OS:
Windows XP
Database:
MS SQL Server
Divers
Thread ID:
00956757
Message ID:
00962690
Vues:
20
Mariam,
I'd recheck. Error code suggests it's a registration problem.
Cetin

>Hi Cetin,
>Thank you for you help.
>I spent a lot of time yesterday reading other forums , such as
>www.dbforums.com, p2p.wrox.com, www.winnetmag.com ... and I found not less then 10 exactly the same questions, but no one exact answer.
>Of couse I checked the existents of vfpoledb.dll, and downloaded new version of it,
>downloaded MDAC 2.8, VFPODBC.msi - no help.
>but i will keep trying,
>thanks again .
>Mariam
>
>>Mariam,
>>Be sure VFPOLEDB is installed and registered there. You might quickly check it in many ways. ie: with a simple HTM
>>
>><html>
>><title>Check VFP Table</title>
>><body>
>><script language="JScript">
>>function CheckTable(dbcPath,dbfName)
>>{
>>  var strCn = "Provider=VFPOLEDB;Data Source=" + dbcPath;
>>  var strSQL = "select * from " + dbfName;
>>
>>  var oConn = new ActiveXObject("Adodb.Connection");
>>  oConn.ConnectionString = strCn;
>>  oConn.Open;
>>  var oRS = oConn.Execute(strSQL);
>>
>>  var lst="<TABLE border='1'><TR>";
>>  var Maxfields=5;
>>  var MaxRows=20;
>>
>>  for (i=0;i<Math.min(oRS.Fields.Count,Maxfields);i++)
>>  {
>>    lst += "<TH>";
>>    lst += oRS.Fields(i).Name;
>>    lst += "</TH>";
>>  }
>>  lst += "</TR>";
>>
>>  var counter=0;
>>  while (!oRS.eof && counter < MaxRows)
>>  {
>>    lst += "<TR>";
>>    for (i=0;i<Math.min(oRS.Fields.Count,Maxfields);i++)
>>    {
>>      lst += "<TD>";
>>      lst += oRS.Fields(i).Value;
>>      lst += "</TD>";
>>    }
>>    lst += "</TR>";
>>    oRS.MoveNext();
>>    counter++;
>>  }
>>  lst += "</TABLE>";
>>  oConn.Close();
>>  tablelist.innerHTML = lst;
>>  return true;
>>}
>></script>
>><table>
>><TR><TD>Locate DBC</TD><TD><input type='file' size='80' name='DBCLOCATION'></TD></TR>
>><TR><TD>TableName</TD><TD><input type='text' size='80' name='TABLENAME'></TD></TR>
>></TABLE><HR>
>><input type='button' value='List' onClick="CheckTable(DBCLOCATION.value,TABLENAME.value);return;">
>><div id='tablelist'></div>
>></body>
>></html>
>>
>>With a udl.
>>-Create an empty file with extension .udl
>>-Dblclick the udl file
>>-Try to select VFPOLEDB from providers and creating a connection
>>Cetin
>>
>>
>>
>>
>>>Hello Cetin !
>>>I am sorry that I have to return to this question again, but I still have an unsolved issue.
>>>
>>>When I first used OPENROWSET method like this
>>>SELECT * FROM OPENROWSET('VFPOLEDB', 'C:\TEMP ';'';'','select * from test1.dbf')
>>>I got the error:
>>>“Ad hoc access to OLE DB provider ‘CustomOLEDBProvider ‘ has been denied. You must access this provider through a linked server”.
>>>In MS KB I found the article # 328569 which gave the solution for this problem - to install the service pack for MS SQL Server. After the installation SP3 (check that DissallowAdHocAccess key exists) I got another message for the same action:
>>>“Could not create an instance of OLE DB provider 'VFPOLEDB'.
>>>OLE DB error trace [Non-interface error: CoCreate of DSO for VFPOLEDB returned 0x80040154]. “
>>>
>>>I tried the same action on my local computer, where I have another copy of MS SQL Server- it works fine.
>>>(I have Windows XP on my computer, and Windows NT on our main server. )
>>>
>>>I am wondering may be you know what the a problem here, what else I have to check or install ?
>>>
>>>Thank you very much,
>>>Mariam
>>>
>>>
>>>>Mariam,
>>>>Why are you using MSDASQL. It's a wrapper driver for ODBC. Directly use VFPOLEDB driver (BTW MSDASQL works too). ie:
>>>>
*Assuming SQL server has a table named myTable with same structure as ordItems
>>>>* lnHandle is ready
>>>>text to m.lcSQL textmerge noshow
>>>>insert into myTable ;
>>>>  SELECT * FROM
>>>>  OPENROWSET('VFPOLEDB',
>>>>  '<<_samples+"data\testdata.dbc">>';'';'',
>>>>  'select * from orditems')
>>>>endtext
>>>>SQLExec(m.lnHandle,m.lcSQL)
>>>>
Cetin
>>>>
>>>>>Thank you for help.
>>>>>i try to use OpenRowSet() but have a error message
>>>>>
>>>>>1)
>>>>>exec sp_addlinkedserver @server=N'CSTSERVER',
>>>>>@srvproduct ='',
>>>>>@provider = N'MSDASQL',
>>>>>@datasrc=N'DBF'
>>>>>2)
>>>>>exec sp_addlinkedsrvlogin @rmtsrvname=N'CSTSERVER',
>>>>>@useself = N'FALSE',
>>>>>@locallogin = NULL,
>>>>>@rmtuser = N'',
>>>>>@rmtpassword =N''
>>>>>
>>>>>first two work fine
>>>>>
>>>>>3)
>>>>>select * from [CSTSERVER].[Q:\FPDEV\COMMON\sqlappinspect]..[helpdb]
>>>>>
>>>>>here i have an error
>>>>>OLE DB provider 'MSDASQL' reported an error.
>>>>>[OLE/DB provider returned message: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified]
>>>>>OLE DB error trace [OLE/DB Provider 'MSDASQL' IDBInitialize::Initialize returned 0x80004005: ].
>>>>>
>>>>>
>>>>>
>>>>>>>Hello All !
>>>>>>>I have VFP 8.0/SQL Server SPT application.
>>>>>>>I'm wondering is there any way to use BULK INSERT command for loading DBF file into a SQL Server table ? All examples I've seen were about loading text files and not the DBF.
>>>>>>>TIA
>>>>>>>Mariam
>>>>>>
>>>>>>Mariam,
>>>>>>It's because dbf files do not need BULK INSERT command. See OpenRowSet() - or search here for samples.
>>>>>>Cetin
Çetin Basöz

The way to Go
Flutter - For mobile, web and desktop.
World's most advanced open source relational database.
.Net for foxheads - Blog (main)
FoxSharp - Blog (mirror)
Welcome to FoxyClasses

LinqPad - C#,VB,F#,SQL,eSQL ... scratchpad
Précédent
Répondre
Fil
Voir

Click here to load this message in the networking platform