Search  
Thursday, May 24, 2012 ..:: Forum ::.. Register  Login
 Forum Minimize
Pentru a putea posta mesaje trebuie să vă înregistraţi.
Notă: Mesajele cu conţinut jignitor sau ilegal (inclusiv cereri de soft piratat) nu sunt acceptate şi vor fi şterse imediat .

Pentru a primi raspunsuri rapide si corecte, scrieti in mesaj ce intentionati sa faceti, ce mesaj de eroare primiti, in ce context si in urma caror actiuni. De asemenea, mentionati versiunea de FoxPro in care lucrati!
Dacă nu specificați versiunea, se consideră VFP 9.0 SP2.

SearchForum Home
  Visual FoxPro  Office Automation  Importul datelo...
 Importul datelor din Acces in VFP
 
 10/20/2005 12:18:06 PM
User is offlinenicunicu
1 posts


Importul datelor din Acces in VFP
 (Romania)
Stie cineva cum pot aduce datele dintr-o tabela Acces intr-o tabela Fox , direct prin intermediul progamului , fara sa mai deschid Acces si sa fac de-acolo exportul ? Eventual printr-un connection cu drivere ODBC , a incercat vreodata cineva ?
 10/20/2005 12:38:41 PM
User is offlineGrigore Dolghin
3590 posts
www.class-software.eu
1st






Re: Importul datelor din Acces in VFP
 (Romania) Modified By Grigore Dolghin  on 12/23/2005 3:01:36 AM)

Uite o secventa de cod reala:

lcString = "Driver={Microsoft Access Driver (*.mdb)};" + ;
"Dbq=C:\drgexport3.0.mdb;SystemDB="
+ ;
FULLPATH("drgworkgroup3.0.mdw") + ";"
+ ;
"UID=drgadmin;PWD=drgadmin"
lnConnectionHandle = SQLSTRINGCONNECT(lcString)

Ulterior poti executa instructiuni de genul:

SQLExec(lnConnectionHandle, "Select * From tabela", "nume_cursor_local")

Pentru sintaxa stringului de conectare, uite-te la www.connectionstrings.com.


Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 1/12/2006 2:53:59 PM
User is offlineLucian Ilea
110 posts
5th


Re: Importul datelor din Acces in VFP
 (N/A)

Buna ziua.

Am reusit folosind codul de mai sus sa fac importul din Acces in Fox. Dar am intampinat o problema. In baza de date Acces am cateva tabele care contin campuri ale caror denumire incepe cu o cifra. In VFP eu stiu ca nu se accepta acest tip de denumire pentru un camp. Cum pot rezolva aceasta problema?

Atasez programelul cu ajutorul caruia import din MS Acces. Mentionez ca structura tabelelor din care import este similara cu cea a cursorului creat in prima parte a codului atasat, cu deosebirea ca denumirea campurilor Z1, Z2 .... Z31 este 1,2,....,31. De asemenea nu am voie sa modific in Acces nimic.

Va multumesc anticipat.

Cu stima, Lucian Ilea

CREATE CURSOR ian (id_unic n(10), nume c(254), prenume c(50), echipa c(50), functia c(50),;
     luna c(50), z1 c(50), z2 c(50), z3 c(50), z4 c(50), z5 c(50), z6 c(50),;
     z7 c(50), z8 c(50), z9 c(50), z10 c(50), z11 c(50), z12 c(50), z13 c(50),;
     z14 c(50), z15 c(50), z16 c(50), z17 c(50), z18 c(50), z19 c(50), z20 c(50),;
      z21 c(50), z22 c(50), z23 c(50), z24 c(50), z25 c(50), z26 c(50), z27 c(50),;
     z28 c(50), z29 c(50), z30 c(50), z31 c(50))

lcString = "Driver={Microsoft Access Driver (*.mdb)};" + ;
"Dbq=Workers Database_2006.mdb;UID=Admin;PWD=;"

lnConnectionHandle = SQLSTRINGCONNECT(lcString)

IF lnConnectionHandle>=0 THEN
 SQLExec(lnConnectionHandle, "Select * From ianuarie", "ian")
 =SQLDISCONNECT(lnConnectionHandle)
 SELECT ian
 BROWSE

 ELSE
     MESSAGEBOX('Nu s-a putut face importul tabelelor din Acces', 16, 'Eroare de conectare')
ENDIF

 1/12/2006 3:50:53 PM
User is offlineVladPop
250 posts
4th




Re: Importul datelor din Acces in VFP
 (N/A)
Raspunsul il gasesti aici: http://www.profox.ro/Forum/tabid/55/forumid/4/threadid/3228/scope/posts/Default.aspx

Ideea e ca vei folosi o serie de iif-uri pt fiecare camp si in loc de select * from ianuarie vei avea un select ceva mai complicat, care pentru fiecare zi va redenumi campul asa cum iti place tie.

Vlad Pop.
 1/12/2006 5:43:56 PM
User is offlineGrigore Dolghin
3590 posts
www.class-software.eu
1st






Re: Importul datelor din Acces in VFP
 (Romania)
 aliennt wrote

Buna ziua.

Am reusit folosind codul de mai sus sa fac importul din Acces in Fox. Dar am intampinat o problema. In baza de date Acces am cateva tabele care contin campuri ale caror denumire incepe cu o cifra. In VFP eu stiu ca nu se accepta acest tip de denumire pentru un camp. Cum pot rezolva aceasta problema?

Atasez programelul cu ajutorul caruia import din MS Acces. Mentionez ca structura tabelelor din care import este similara cu cea a cursorului creat in prima parte a codului atasat, cu deosebirea ca denumirea campurilor Z1, Z2 .... Z31 este 1,2,....,31. De asemenea nu am voie sa modific in Acces nimic.

Va multumesc anticipat.

Cu stima, Lucian Ilea

CREATE CURSOR ian (id_unic n(10), nume c(254), prenume c(50), echipa c(50), functia c(50),;
     luna c(50), z1 c(50), z2 c(50), z3 c(50), z4 c(50), z5 c(50), z6 c(50),;
     z7 c(50), z8 c(50), z9 c(50), z10 c(50), z11 c(50), z12 c(50), z13 c(50),;
     z14 c(50), z15 c(50), z16 c(50), z17 c(50), z18 c(50), z19 c(50), z20 c(50),;
      z21 c(50), z22 c(50), z23 c(50), z24 c(50), z25 c(50), z26 c(50), z27 c(50),;
     z28 c(50), z29 c(50), z30 c(50), z31 c(50))

lcString = "Driver={Microsoft Access Driver (*.mdb)};" + ;
"Dbq=Workers Database_2006.mdb;UID=Admin;PWD=;"

lnConnectionHandle = SQLSTRINGCONNECT(lcString)

IF lnConnectionHandle>=0 THEN
 SQLExec(lnConnectionHandle, "Select * From ianuarie", "ian")
 =SQLDISCONNECT(lnConnectionHandle)
 SELECT ian
 BROWSE

 ELSE
     MESSAGEBOX('Nu s-a putut face importul tabelelor din Acces', 16, 'Eroare de conectare')
ENDIF

lcString = "Driver={Microsoft Access Driver (*.mdb)};" + ;
"Dbq=Workers Database_2006.mdb;UID=Admin;PWD=;"

lnConnectionHandle = SQLSTRINGCONNECT(lcString)

lcSQLCommand = "Select id_unic, nume, prenume, echipa, functia, ;
   luna, 1 As Z01,z2 As Z02, 3 As Z03, 4 As Z4, 5 As Z5, ..................."

IF lnConnectionHandle>=0 THEN
 SQLExec(lnConnectionHandle, lcSQLCommand, "ian")
 =SQLDISCONNECT(lnConnectionHandle)
 SELECT ian
 BROWSE

Ar trebui sa mearga. Instructiunea sql trimisa catre Access nu trebuie sa aiba sens in VFP; ea este trimisa catre backend asa cum e si e treaba aluia sa se descurce cu ea.


Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 1/13/2006 12:13:34 PM
User is offlineLucian Ilea
110 posts
5th


Re: Importul datelor din Acces in VFP
 (N/A)

Imi cer scuze pentru intrebarile probabil prostesti pe care le pun... Sunt incepator, asta este...

La varianta propusa de d-l Dolghin am o problema. Ea apare in urmatoarea portiune de cod:

lcSQLCommand = "Select id_unic,nume,prenume,echipa,functia,luna,;
 1 As Z1,2 As Z2,3 As Z3,4 As Z4,5 As Z5,6 as z6,7 as z7,8 as z8,;
 9 as z9,10 as z10,11 as z11,12 as z12,13 as z13,14 as z14,15 as z15,;
 16 as z16,17 as z17,18 as z18,19 as z19,20 as z20,21 as z21,22 as z22,;
 23 as z23,24 as z24,25 as z25,26 as z26,27 as z27,28 as z28,29 as z29,;
 30 as z30,31 as z31 from ianuarie"

Eroarea este urmatoarea:

Command contains unrecognized phrase/keyword (Error 36)

Ma puteti ajuta? Multumesc anticipat.

 1/13/2006 12:34:32 PM
User is offlineanonymous
0 posts


Re: Importul datelor din Acces in VFP
 (Romania)
N-am numarat, dar presupun ca e mai lunga de 256 de caractere, asta in cazul in care eroarea iti apare la trimiterea instructiunii la server. Fa-o din bucati.
Mult mai probabil, ar trebui sa definesti cam asa :
lcSQLCommand = "Select id_unic,nume,prenume,echipa,functia,luna,"+;
"1 As Z1,2 As Z2,3 As Z3,4 As Z4,5 As Z5,6 as z6,7 as z7,8 as z8,"+;
etc.
 1/13/2006 12:39:58 PM
User is offlineGrigore Dolghin
3590 posts
www.class-software.eu
1st






Re: Importul datelor din Acces in VFP
 (Romania)

Nu-ti cere scuze, ca n-ai de ce.

lcSQLCommand este un string lung, pe care eu l-am rupt in mai multe linii de cod. Sintaxa corecta este

variabila = "string" + ;
"string" + ;
"string" + ;
....
"string"

In exemplul pe care ti l-am dat n-am pus ghilimelele de la sfarsit si +-ul pentru concatenare. Imi cer scuze.


Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 1/13/2006 1:36:20 PM
User is offlineLucian Ilea
110 posts
5th


Re: Importul datelor din Acces in VFP
 (N/A)

Da, mi-am dat seama ca am gresit sintaxa la un moment dat. Acum a aparut o alta problema.

Nu mai da nici o eroare, insa SQLEXEC returneaza -1, deci ceva nu e in ordine, iar cursorul in care ar trebui sa puna rezultatele e gol. Ce am gresit din nou?

Intr-adevar, lcSQLcommand este mai mare de 255 de caractere. Dar in help am vazut ca nu conteaza daca il imparti in mai multe substringuri, asa cum mi-ati indicat dvs.

 1/13/2006 1:40:20 PM
User is offlineGrigore Dolghin
3590 posts
www.class-software.eu
1st






Re: Importul datelor din Acces in VFP
 (Romania)

Cand SQLExec iti intoarce -1, primul lucru pe care trebuie sa-l faci este AERROR(gaErrorArray), si apoi te uiti la randul al doilea din array, care contine textul erorii returnate de backend (access in cazul tau). Vezi ce scrie acolo si revino cu textul erorii.


Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 1/13/2006 1:56:04 PM
User is offlineLucian Ilea
110 posts
5th


Re: Importul datelor din Acces in VFP
 (N/A)

Eraorea este:

Connectivity error: [Microsoft][ODBC Microsoft Acces Driver] Too few parameters. Expected 1.

 1/13/2006 2:01:49 PM
User is offlineGrigore Dolghin
3590 posts
www.class-software.eu
1st






Re: Importul datelor din Acces in VFP
 (Romania)
N-am nici cea mai mica idee de ce asteapta parametri. Ma tem ca nu te pot ajuta - habar n-am de ce da eroarea aia.
Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 1/13/2006 2:53:36 PM
User is offlineanonymous
0 posts


Re: Importul datelor din Acces in VFP
 (Romania) Modified By anonymous  on 1/13/2006 3:53:54 PM)
Citeva sugestii :
- ruleaza interogarea respectiva direct in Access, sa vezi daca merge ( am ceva dubii vis-a-vis de "select 1 as Z1" );
- daca acolo merge, creeaza un view cu aceiasi definitie ca si intergoarea cu pricina, si din VFP trimite-i "select * from nume_view"
- daca nici asa nu merge, exporta din Access in CSV, schimba cu mina titlurile coloanelor, si importa-le in VFP.
 1/13/2006 3:34:25 PM
User is offlineLucian Ilea
110 posts
5th


Re: Importul datelor din Acces in VFP
 (N/A)

Am urmat sfatul lui nutz si interogarea din Acces are urmatoarea forma:

lcSQLCommand = "SELECT ianuarie.[id unic], ianuarie.Nume, ianuarie.Prenume, ianuarie.Echipa, "+;
    "ianuarie.Functia, ianuarie.Luna, ianuarie.[1] AS Z1, ianuarie.[2] AS Z2, ianuarie.[3] AS Z3,"+;
    "ianuarie.[4] AS Z4, ianuarie.[5] AS Z5, ianuarie.[6] AS z6, ianuarie.[7] AS z7, "+;
    "ianuarie.[8] AS z8, ianuarie.[9] AS z9, ianuarie.[10] AS z10, ianuarie.[11] AS z11, "+;
    "ianuarie.[12] AS z12, ianuarie.[13] AS z13, ianuarie.[14] AS z14, ianuarie.[15] AS z15, "+;
    "ianuarie.[16] AS z16, ianuarie.[17] AS z17, ianuarie.[18] AS z18, ianuarie.[19] AS z19, "+;
    "ianuarie.[20] AS z20, ianuarie.[21] AS z21, ianuarie.[22] AS z22, ianuarie.[23] AS z23, "+;
    "ianuarie.[24] AS z24, ianuarie.[25] AS z25, ianuarie.[26] AS z26, ianuarie.[27] AS z27, "+;
    "ianuarie.[28] AS z28, ianuarie.[29] AS z29, ianuarie.[30] AS z30, ianuarie.[31] AS z31 "+;
    "FROM ianuarie;"

In aceasta forma merge perfect.

Va multumesc tuturor pentru ajutorul acordat...

Cu stima, Lucian Ilea

 

  Visual FoxPro  Office Automation  Importul datelo...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement