Search  
Friday, May 25, 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  Client/Server  Conectare din V...
 Conectare din VFP in SQL Server 2000
 
 7/25/2005 11:35:21 AM
User is offlinechucki21
152 posts
5th


Conectare din VFP in SQL Server 2000
 (Romania)

Salut,

Am un form cu 3 casute text (nume,prenume,adresa) si o baza de date creata in Sql Server 2000.Cum ma pot conecta din VFP la baza de date, respectiv tabela de acolo pentru a putea introduce inregistrari.M-ar interesa codul de conectare scris la "init" FORM si de ce ar mai treb sa tin cont.

Merci mult

 7/25/2005 11:51:47 AM
User is offlinenae racaru
714 posts
www.rarom.ro
1st




Re: Conectare din VFP in SQL Server 2000
 (Romania)
Trebuie mai intai sa creezi un ODBC data source care sa aiba ca driver SQL server
si apoi vezi functiile sqlconnect(), sqlexec().

Este relativ simplu.

Succes!

Nae Racaru

VFP 6 si 9 + Oracle
 7/25/2005 12:06:47 PM
User is offlinecristifaur
9 posts


Re: Conectare din VFP in SQL Server 2000
 (Romania)
Eu as folosi mai degraba cursoradapterul. Asta numai daca ai 8.0 sau 9.0.
 
Iata mai jos un mic exemplu. E simplu sa-l definesti pe al tau. De asemenea as folosi dataenvironment in loc de a scrie codul in Init().
In ex. de mai jos trebuie sa schimbi numele serverului din SERVER2000 in numele serverului tau.
 
close all
release all
clear
local caBaseAdapter as cursoradapter
caBaseAdapter=createobject('caBaseAdapter')
caBaseAdapter.tag = "Driver={SQL Server};Server=Server2000;Database=Northwind;Int Security;"
caBaseAdapter.alias = "crsCustomers"
caBaseAdapter.datasourcetype = "ODBC"
caBaseAdapter.selectcmd = "select CustomerID, CompanyName from Customers where customerid like 'A%'"
caBaseAdapter.cursorschema = "CUSTOMERID C(5), COMPANYNAME C(40)"
caBaseAdapter.keyfieldlist = "CUSTOMERID"
caBaseAdapter.tables = "Customers"
caBaseAdapter.updatablefieldlist = "CUSTOMERID, COMPANYNAME"
caBaseAdapter.updatenamelist = "CUSTOMERID Customers.CustomerID, COMPANYNAME Customers.CompanyName"
if caBaseAdapter.cursorfill()
select crsCustomers
browse
endif
 
define class caBaseAdapter as cursoradapter
buffermodeoverride = 5
usecursorschema = .t.
 
procedure autoopen
*** Setup code: DO NOT REMOVE
if not pemstatus(this, '__VFPSetup', 5)
this.addproperty('__VFPSetup', 1)
this.init()
endif
*** End of Setup code: DO NOT REMOVE
endproc
 
procedure init
*** Setup code: DO NOT REMOVE
local llReturn
do case
case not pemstatus(this, '__VFPSetup', 5)
this.addproperty('__VFPSetup', 0)
case this.__VFPSetup = 1
this.__VFPSetup = 2
case this.__VFPSetup = 2
this.__VFPSetup = 0
return
endcase
set multilocks on
llReturn = dodefault()
*** End of Setup code: DO NOT REMOVE
*** Select connection code: DO NOT REMOVE
***
if !empty(this.tag)
this.datasource = sqlstringconnect(this.tag)
endif
***
*** End of Select connection code: DO NOT REMOVE
*** Setup code: DO NOT REMOVE
if this.__VFPSetup = 1
this.__VFPSetup = 2
endif
return llReturn
*** End of Setup code: DO NOT REMOVE
endproc
 
procedure tag_assign
lparameters vNewVal
this.tag = m.vNewVal
this.init()
endproc
enddefine

Cristi Faur

 chucki21 wrote

Salut,

Am un form cu 3 casute text (nume,prenume,adresa) si o baza de date creata in Sql Server 2000.Cum ma pot conecta din VFP la baza de date, respectiv tabela de acolo pentru a putea introduce inregistrari.M-ar interesa codul de conectare scris la "init" FORM si de ce ar mai treb sa tin cont.

Merci mult

 7/25/2005 1:40:06 PM
User is offlinechucki21
152 posts
5th


Re: Conectare din VFP in SQL Server 2000
 (Romania)

 nnaaee wrote
Trebuie mai intai sa creezi un ODBC data source care sa aiba ca driver SQL server
si apoi vezi functiile sqlconnect(), sqlexec().

Este relativ simplu.

Succes!

Nae Racaru

Multumesc frumos, un exemplu se poate?

 7/25/2005 2:05:53 PM
User is offlinecristifaur
9 posts


Re: Conectare din VFP in SQL Server 2000
 (Romania)

 chucki21 wrote

un exemplu se poate?

Pentru conectare ai cod mai jos. Pentru update, insert si delete chemi sqlexec cu sintaxe corespunzatoare...

oConn=SQLSTRINGCONNECT("Driver={SQL Server};Server=Server2000;Database=Northwind;Int Security;")

=SQLEXEC(oConn,"Select * from customers","MyCursor")

SELECT mycursor

BROWSE

Cristi Faur

 7/25/2005 2:17:29 PM
User is offlinechucki21
152 posts
5th


Re: Conectare din VFP in SQL Server 2000
 (Romania) Modified By chucki21  on 7/25/2005 2:41:46 PM)

ITI SUPER MULTUMESC!!!!!!

Sa nu uit eu la inceput am realizat o conectare la meniul Connections si mi-a spus ca totul e ok.Nu as putea sa ma folosesc de conexiunea aia astfel incat sa fiu tot timpul conectat la baza de date si sa nu mai fiu nevoit sa dau mereu sqlexec impreuna cu interogarea dorita.adica pur si simplu sa lucrez direct update-uri,select-uri..etc direct pe baza de date, conectandu-ma doar la inceput la "init" FORM.

 7/25/2005 2:55:04 PM
User is offlinenae racaru
714 posts
www.rarom.ro
1st




Re: Conectare din VFP in SQL Server 2000
 (Romania)
LEGATURA=SQLSTRINGCONNECT("Driver={SQL SERVER}")
**APARE O FEREASTRA IN CARE VA TREBUI SA SE INTRODUCA DATELE REFERITOARE LA SERVER SI UTILIZATOR

**LEGATURA=SQLSTRINGCONNECT("Driver={SQL **SERVER};Server=NumeServer2000;Database=NumeBazaDate;uid=NumeUtilizator;pwd=ParolaUtilizator)
**FARA FEREASTRA DE DIALOG

IF LEGATURA>1
    **SE TESTEAZA DACA CONECXIUNEA A FOST FACUTA (TREBUIE SA FIE MAI MARE DE 0)
   REZULTA =SQLEXEC(LEGATURA,"SELECT * FROM TABELADORITA","NUMECURSOR")
    **DACA NU SE TRECE NUMECURSOR II PUNE IMPLICIT SQLRESULT
    IF
REZULTA=1
       **DACA S-A EXECUTAT CORECT FUNCTIA SQLEXEC() TREBUIE SA FIE 1 LA EROARE ESTE -1
       BROW
    ELSE
       =AERROR(EROARE)
      
FOR n = 1 TO 7      
           ? EROARE(n)  
       ENDFOR
    ENDIF
ELSE
    WAIT 'CONEXIUNEA NU S-A REALIZAT' WINDOW TIMEOUT 5
ENDIF  




NAE RACARU

VFP 6 si 9 + Oracle
 7/26/2005 8:35:22 AM
User is offlinechucki21
152 posts
5th


Re: Conectare din VFP in SQL Server 2000
 (Romania)

Sincer va spun am ramas fara cuvinte.

Va multumesc foarte mult pentru ajutor

 7/26/2005 8:39:32 AM
User is offlineGrigore Dolghin
3590 posts
www.class-software.eu
1st






Re: Conectare din VFP in SQL Server 2000
 (Romania)
 chucki21 wrote

ITI SUPER MULTUMESC!!!!!!

Sa nu uit eu la inceput am realizat o conectare la meniul Connections si mi-a spus ca totul e ok.Nu as putea sa ma folosesc de conexiunea aia astfel incat sa fiu tot timpul conectat la baza de date si sa nu mai fiu nevoit sa dau mereu sqlexec impreuna cu interogarea dorita.adica pur si simplu sa lucrez direct update-uri,select-uri..etc direct pe baza de date, conectandu-ma doar la inceput la "init" FORM.

Nu. Ideea este ca este foarte posibil sa ai simultan mai multe conexiuni, catre back-end-uri diferite, iar in scenariul asta VFP trebuie sa stie cu cine vorbesti. Handle-ul conexiunii tocmai asta face: ii spune lui VFP ca vrei sa folosesti conexiunea cutare. Cu alte cuvinte, parametrul ConnectionHandle este obligatoriu, iar folosirea lui SQLExec este si ea obligatorie. Comanda UPDATE face niste lucruri, iar SQLEXEC(handle, "UPDATE") face cu totul altceva. Faptul ca in interiorul comenzii SQLExec() apare si textul "update" este cu totul si cu totul intamplator si n-are absolut nimic de-a face cu mecanismele care intra in functiune la intalnirea comenzii UPDATE. "update" ala e un string. Nimic mai mult decat un sir de litere care este trimis pe sarme pana la serverul sql. Este treaba lui sa inteleaga si sa execute comenzile primite.

Pe de alta parte, accesul direct la tabelele lui SQL Server (daca ar exista) ar fi si o gaura MAJORA de securitate.

In concluzie, raspunsul la intrebarea ta este "nu se poate" si comentariul meu ar fi "si e foarte bine ca nu se poate".


Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 7/26/2005 8:55:22 AM
User is offlinenae racaru
714 posts
www.rarom.ro
1st




Re: Conectare din VFP in SQL Server 2000
 (Romania)
Ma scuzi ca intervin, dar pentru corectitudinea informatiei trebuie sa spun:

Se pot creea remote view pe tabelele respective care pot fi updatate chiar si direct, dar lucrul programatic cu aceste view-uri intr-o retea, mai ales daca au multe inregistrari, este foarte greoi, inaintea fiecarei chestionari trebuind executata functia requery().
In orice caz, nu ii recomand lui  chucki21 sa foloseasca aceste remote view-uri decat pentru prelucrari statistice.

Nae Racaru

Domne, e super de super site-ul asta!!!!!

VFP 6 si 9 + Oracle
  Visual FoxPro  Client/Server  Conectare din V...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement