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  MySQL ODBC si c...
 MySQL ODBC si comenzi multiple
 
 2/26/2009 10:08:02 AM
User is offlineGrigore Dolghin
3590 posts
www.class-software.eu
1st






MySQL ODBC si comenzi multiple
 (Romania)
Am avut nevoie sa execut mai multe comenzi in batch pe un server MySQL, prin ODBC, si primeam erori de sintaxa la inceputul celei de-a doua comenzi. Un exemplu ar fi:

lcString = "Select * From users;Select * From module"
SQLExec(nHandle, lcString, "crsTest")

Aplicabilitatea e destul de diversa; de exemplu, se poate crea o tabela temporara, apoi se prelucreaza iar la sfarsit se returneaza setul de inregistrari. Tinand cont ca procedurile stocate nu sunt suportate pe toate versiunile lui MySQL, imi trebuia o solutie pentru a face asta din client, prin ODBC.

Solutia este folosirea optiunii FLAG_MULTI_STATEMENTS (are valoarea 67108864). Concret, stringul de conectare ar trebui sa se termine cu "OPTION=67108864". In cazul in care stringul avea deja o valoare in option, se aduna cele doua numere.

Folosind optiunea asta, exemplul de mai sus functioneaza corect si creeaza doua cursoare: crsTest (care contine inregistrarile din tabela users) si crsTest1, care contine inregistrarile din tabela module.

---------------
Poate ii trebuie cuiva informatia asta.

Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 3/3/2009 10:03:36 PM
User is offlinevicos
139 posts
5th


Re: MySQL ODBC si comenzi multiple
 (N/A)
Mersi. Intr-adevar este buna. Dar pt temporare se poate si fara proceduri stocate.

TEXT TO lcSQL noshow pretext 15 TEXTMERGE
CREATE TEMPORARY TABLE p ENGINE = 'HEAP'
SELECT cont, den_cont FROM plcont
ENDTEXT
lok = SQLEXEC(nsqlhandle, lcsql) = 1

TEXT TO lcSQL noshow pretext 15 TEXTMERGE
CREATE TEMPORARY TABLE i ENGINE = 'HEAP'
SELECT cont, suma FROM inregistrari WHERE anul = ?xanul AND luna = ?xnrluna GROUP BY cont
ENDTEXT
lok = SQLEXEC(nsqlhandle, lcsql) = 1
TEXT TO lcSQL noshow pretext 15 TEXTMERGE
SELECT p.cont, p.den_cont, COALESCE(i.suma, 0) AS suma
FROM p
LEFT JOIN i ON p.cont = inregistrari.cont
GROUP BY p.cont
ENDTEXT
lok = SQLEXEC(nsqlhandle, lcsql, 'seekprodusor') = 1
  Visual FoxPro  Client/Server  MySQL ODBC si c...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement