Search  
Wednesday, May 23, 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  Visual FoxPro in general  MySql sau Fierb...
 MySql sau Fierbird???
 
 9/8/2005 6:06:32 PM
User is offlinevicos
139 posts
5th


MySql sau Fierbird???
 (Romania)
    Care este mai rapid dintre cele doua?
    Vreau sa fac o aplicatie cat de cat serioasa si nu stiu pt. care din ele sa ma documentez.
    Am facut cateva incercari cu FireBird dar imi da o eroare:
         "Dynamic Sql Error ;
        -204;
       -Table unknow
       odbc connection = 35;
       nr erori odbc = 335544569"
       Dati-mi niste sugestii va rog!!!

    PS. Pt dl Dolghin!
    Referitor la problema care am pus-o cu LUCRU IN RETEA, nu pot folosi tranzactii pt ca nu am o baza de date pt. dbf-uri. Daca o sa invat cu Firebird-ul sau MySql atunci poate merita transerul aplicatiei.
    Apropo! Aveti un exemplu (prg) cu Firebird sau MySql?
    Thanks!!!


 9/8/2005 6:35:57 PM
User is offlineGrigore Dolghin
3590 posts
www.class-software.eu
1st






Re: MySql sau Fierbird???
 (Romania)

Ca sa-ti raspund la intrebare, Firebird e mai serios decat MySQL. MySQL mai are pana sa ajunga un server SQL serios. (Nu zic ca nu merge, dar pentru aplicatii "grele" trebuie mai mult decat subselecturi si referential integrity).

Cat despre tranzactiile VFP, in VFP 9 nu este nevoie sa ai o baza de date pentru a avea tranzactii. Daca n-ai VFP 9, oricum nu te opreste nimeni sa adaugi tabelele alea intr-o baza de date, fara sa modifici nimic la ele, si o sa ai tranzactii.


Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 9/8/2005 10:42:43 PM
User is offlineDorin Vasilescu
1366 posts
1st




Re: MySql sau Fierbird???
 (N/A)
Care este mai rapid dintre cele doua?

Local, MySQL. Dar daca pui 30 de utilizatori dintre care cativa fac interogari care dureaza cat de cat, Firebird iese primul datorita MGA (Multi Generational Architecture)
Suportul pentru triggeri si proceduri stocate este din nou un avantaj. Daca trebuie o procesare mai complexa, apelul unei proceduri stocate poate fi mul mai rapid decat un SELECT cu join-uri si filtre/subselecturi super complicate
Un exemplu:
    La o aplicatie facuta de mine pentru fabricutza nostra, se introduce un bon de consum.
    La fiecare litera/cifra tastata se apeleaza o procedura stocata care genereaza lista de produse care satisfac criteriul + calculul stocului pe fiecare pozitie + prezentarea componentei stocului / loturi intrate.
Merge instantaneu, chiar si cu cele cateva sute de mii de inregistrari deja existente.
Shpilu e ca la foxpro, indecsi bine alesi si cu selectivitate cat mai mare.  

Vreau sa fac o aplicatie cat de cat serioasa si nu stiu pt. care din ele sa ma documentez.

Daca vrei să şi vinzi, Firebird 100% free, chiar şi inclus  şi distribuit cu aplicatii comerciale.
Exemple : AVG antivirus, IPCheck, GoldMine
 
Am facut cateva incercari cu FireBird dar imi da o eroare:
Dati-mi niste sugestii va rog!!!

Dă-mi nişte linii de cod  :), după aia mai vedem.

 9/9/2005 1:57:50 AM
User is offlineGrigore Dolghin
3590 posts
www.class-software.eu
1st






Re: MySql sau Fierbird???
 (Romania)

vicos, ti-as sugera sa-l asculti pe Dorin - e tata Firebirdului p-aici.


Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 9/9/2005 2:13:42 PM
User is offlinevicos
139 posts
5th


Re: MySql sau Fierbird???
 (Romania)
Cu ce se converteste dbf into interbase/firebird?
Eu am un trial (FULL CONVERT 1.9 de la spectral core) dar este trial si converteste decat 5 coloane.
Exemplu cerut::
PARA _lcname, _lsourcedb
ON ERROR *
CREA CONN &_lcname ;
    CONNSTRING  DSN=TEST;Driver=Firebird/InterBase(r) driver;Dbname=D:\EcontRon\TEST.GDB;CHARSET=NONE;PWD=DKEBFJENHFCOBHGHLAIMNAAFICELEAEGDNMFNOGALAMHBBGCHFADNKCBPPGMANOGIEKENIOPHDIPBIECPLLLCBIKEJKMJLPLIB;UID=SYSDBA

STOR SQLCONNECT(_lcname) TO gnconnhandle

SQLTABLES(gnconnhandle, "'VIEW', 'SYSTEM TABLE'", "mydbresult")
STORE SQLTABLES(gnconnhandle, 'TABLE', 'mycursor') TO ntables
IF ntables = 1
    SELECT mycursor
    LIST table_name
ENDIF

xcol = SQLCOLUMNS(gnconnhandle, 'rpr1', 'FOXPRO', 'S_DOC')
IF xcol # 1
    colectare_erori = AERROR(terrorarray)
    = MESSAGEBOX('numarul erorii: = ' + STR(terrorarray(1)) + CHR(13) + 'Mesajul de eroare: = ' + terrorarray(2) + ;
        CHR(13) + 'Eroarea returnata de odbc: = ' + terrorarray(3) + ;
        CHR(13) + 'ODBC sql current state: = ' + terrorarray(4) + ;
        CHR(13) + 'Numarul erorii din sursa odbc: = ' + STR(terrorarray(5)) + ;
        CHR(13) + 'ODBC connection: = ' + STR(terrorarray(6)), 32, 'EROARE!!!')

ENDI

IF gnconnhandle <= 0
    = MESSAGEBOX('Nu pot deschide baza de date din conexiunea ' + _lcname, 16, 'Eroare de conectare !!!')
    colectare_erori = AERROR(terrorarray)
    = MESSAGEBOX('numarul erorii: = ' + STR(terrorarray(1)) + CHR(13) + 'mesajul de eroare: = ' + terrorarray(2) + CHR(13) + 'eroarea returnata de odbc: = ' + terrorarray(3) + CHR(13) + 'odbc sql current state: = ' + terrorarray(4) + CHR(13) + 'numarul erorii din sursa odbc: = ' + STR(terrorarray(5)) + CHR(13) + 'odbc connection: = ' + STR(terrorarray(6)), 32, 'EROARE!!!')
    SQLDISCONNECT(gnconnhandle)
    RETU
ENDI

*!*    nsetpacketsize = SQLSETPROP(gnconnhandle, "PacketSize", 8192)
*!*    nsetquerytimeout = SQLSETPROP(gnconnhandle, "QueryTimeOut", 1)
*!*    nsetwaittime = SQLSETPROP(gnconnhandle, "WaitTime", 60)
*!*    nsetasynchronous = SQLSETPROP(gnconnhandle, "Asynchronous", .T.)

=createview('rpr', 'rpr1', 'rpr.cont', 'ECONT')
*SQLEXEC(gnconnhandle, 'select * from RPR1')
executsql('LOVE', "select CONT, DEN_CONT from RPR1 where CONT='401.379'", 'vicos','COPYUSE')
ENDPROC

FUNC executsql
    PARA conexiune, lcquery, numecursor, actiune, zecimale
    LOCAL llok
    llok = .T.
    IF TYPE('numecursor') = 'L' .AND. numecursor = .F.
        numecursor = 'SqlResult'
    ENDI
    IF TYPE('zecimale') = 'N'
        olddeci = SET('DECI')
        SET DECI TO zecimale
    ENDI
    STOR SQLCONNECT(ALLT(conexiune)) TO gnconnhandle
    IF gnconnhandle <= 0
        WAIT WIND 'CONEXIUNE INVALIDA LA EXECUSQL ' + conexiune + STR(gnconnhandle)
    ENDI
    IF SQLPREPARE(gnconnhandle, lcquery, numecursor) <= 0
        = MESSAGEBOX("Nu am reusit executia: " + lcquery, 16, PROG())
        = AERROR(terrorarray)
        = MESSAGEBOX(terrorarray(3), "Codul de eroare:" + ALLT(STR(terrorarray(5))))
        llok = .F.
    ELSE
        IF SQLEXEC(gnconnhandle) <= 0
            = AERROR(terrorarray)
            = MESSAGEBOX(terrorarray(3), "Codul de eroare:" + ALLT(STR(terrorarray(5))))
            llok = .F.
        ENDI
    ENDI
    IF llok
        = SQLCOMMIT(gnconnhandle)
        IF TYPE('ACTIUNE') = 'C' .AND. UPPE(actiune) = 'BROW'
            BROW
        ENDI
        IF TYPE('ACTIUNE') = 'C' .AND. UPPE(actiune) = 'COPY'
            COPY TO (numecursor)
        ENDI
        IF TYPE('ACTIUNE') = 'C' .AND. UPPE(actiune) = 'COPYUSE'
            COPY TO (numecursor)
            SELE (numecursor)
            USE
            USE EXCL (numecursor) IN 0
        ENDI
        SQLDISCONNECT(gnconnhandle)
        RETU .T.
        IF TYPE('zecimale') = 'N'
            SET DECI TO &olddeci
        ENDI
    ELSE
        = SQLROLLBACK(gnconnhandle)
        IF TYPE('zecimale') = 'N'
            SET DECI TO &olddeci
        ENDI
        RETU .F.
    ENDI
    SQLDISCONNECT(gnconnhandle)
ENDFUNC

PROC createview
    PARA _cview, _ctabela, _ccamp, _cconexiune, vad
    IF TYPE('vad') = 'L' .AND. vad = .F.
        vad = SPAC(0)
    ENDI
    IF !INDBC(_cview, 'VIEW') .OR. DBGETPROP(_cview, 'view', 'connectname')#ALLT(_cconexiune);
     .OR. ATC(ALLT(xanul), DBGETPROP(ALLT(_cconexiune), "CONNECTION", "ConnectString")) = 0
        CREA SQL VIEW &_cview CONN &_cconexiune AS SELECT * FROM &_ctabela
        IF USED(_cview)
            SELE (_cview)
            USE
        ENDI
        IF vad = SPAC(0)
            USE (_cview) IN 0
        ELSE
            USE (_cview) NODAT IN 0
        ENDI
        SELE (_cview)
        DBSETPROP(_cview, 'View', 'Tables', _ctabela)
        DBSETPROP(_ccamp, 'Field', 'KeyField', .T.)
        FOR alt_i = 1 TO FCOU()
            _cimp = FIEL(alt_i)
            IF _cimp # 'operatiuni'
                DBSETPROP(_cview + '.' + _cimp, 'Field', 'UpdateName', _ctabela + '.' + _cimp)
                DBSETPROP(_cview + '.' + _cimp, 'Field', 'Updatable', .T.)
            ENDI
        ENDF
        DBSETPROP(_cview, 'View', 'UpdateType', 1)
        DBSETPROP(_cview, 'View', 'WhereType', 3)
        DBSETPROP(_cview, 'View', 'FetchMemo', .F.)
        DBSETPROP(_cview, 'View', 'UseMemoSize', 255)
        DBSETPROP(_cview, 'View', 'FetchSize', -1)
        DBSETPROP(_cview, 'View', 'MaxRecords', -1)
        DBSETPROP(_cview, 'View', 'Tables', _ctabela)
        DBSETPROP(_cview, 'View', 'Prepared', .T.)
        DBSETPROP(_cview, 'View', 'CompareMemo', .T.)
        DBSETPROP(_cview, 'View', 'FetchAsNeeded', .T.)
        DBSETPROP(_cview, 'View', 'FetchSize', -1)
        DBSETPROP(_cview, 'View', 'Comment', "")
        DBSETPROP(_cview, 'View', 'BatchUpdateCount', 10)
        DBSETPROP(_cview, 'View', 'ShareConnection', .T.)
        DBSETPROP(_cview, 'View', 'SendUpdates', .T.)
        IF _cview = 'vanzari'
            DBSETPROP(_cview, 'View', 'FetchMemo', .T.)
        ENDI
        IF _cview = 'configurare'
            DBSETPROP('configurare.pr_risc', 'field', 'DataType', 'B(9,3)')
            DBSETPROP('configurare.pr_agric', 'field', 'DataType', 'B(9,3)')
        ENDI
        IF !USED(_cview)
            WAIT WIND 'NU EXISTA ALIASUL ' + _cview
        ELSE
            SELE (_cview)
        ENDI
    ELSE
        IF !USED(_cview)
            IF vad = SPAC(0)
                USE (_cview) IN 0
            ELSE
                USE (_cview) NODAT IN 0
            ENDI
        ENDI
        SELE (_cview)
    ENDI
    *ENDI
ENDPROC


 9/9/2005 3:24:34 PM
User is offlineGrigore Dolghin
3590 posts
www.class-software.eu
1st






Re: MySql sau Fierbird???
 (Romania)

Tona aia de cod e nefolositoare; daca vrei sa atasezi cod, fa-l zip si ataseaza-l, ca asa intrebarea se pierde in context.

Care era intrebarea, de fapt?


Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 9/9/2005 8:42:34 PM
User is offlineDorin Vasilescu
1366 posts
1st




Re: MySql sau Fierbird???
 (N/A)
Aha!
M-am prins
Firebird are o "obsesie" by design (o fi buna, rea, nu stiu, nu m-am lovit de ea, poate e kiar SQL standard)
Daca ai creat un obiect cu "nume_obiect" intre ghilimele, considera ca folosesti "mixed case" sau nume rezervate ca si nume de obiecte si trebuie sa incadrezi intre ghilimele intotdeauna cand le folosesti.
Daca creezi tabele, coloane, SP, etc, fara acele ghilimele, poti sa scrii mixed case, sau lower/upper case, cum vrei, ca le cauta cum trebuie.

Deci, daca ai CREATE TABLE "Tabela_Mea", pururea si in  vecii vecilor numai asa o apelezi

Daca ai CREATE TABLE Tabela_Mea , poti sa o apelezi cum vrei, exclusiv ghilimele.

Mai are si driverul ODBC niste setari de ghilimele  (quoted identifier, auto quoted identifier) care dau dreaq tot ce am scris eu :)

Si inca un sfat
IBExpert personal, EMS Firebird/Interbase manager lite sunt free si kiar super.
Daca vrei kestii serioase (monitorizare, debug la proceduri stocate, analizer de plan, manager grant-uri si roluri) exista versiunile full. De la EMS am un REG. , daca promiti ca-l folosesti doar cat faci  importul de tabele :))





 9/12/2005 11:08:44 AM
User is offlinevicos
139 posts
5th


Re: MySql sau Fierbird???
 (Romania)
<>

    Am cerut asa ceava. La ce l-as mai putea folosi sau de ce trebuie sa promit ca nu-l folosesc la altceva. Ce face in plus. Sau este pe bani???

    Daca vrei sa mi-l trimiti te rog fa-o.

< Daca ai CREATE TABLE Tabela_Mea , poti sa o apelezi cum vrei, exclusiv ghilimele.>>

    Nu am inteles cand naiba as fi dat <<CREATE TABLE "Tabela_Mea">>. Bazele mele sunt vechi de 7 ani si nu stiu cum am creat tabelele, cu ghilimele sau fara. Treaba e ca dupa convertire (cu un trial care converteste decat 5 coloane),  numele tabelelor din Firebird sunt cu litere mici, eu asa le-am apelat in codul trimis dar tot imi da eroare ca nu cunoaste tabela.
    Care sunt pasii de la A la Z presupunand ca am convertit DBF into Firebird?
    Adica ce trebuie sa configurez in ODBC si ce fel trebuie sa scriu codul ca sa creez o conexiune pe datele din firebird???



 9/12/2005 3:35:04 PM
User is offlineDorin Vasilescu
1366 posts
1st




Re: MySql sau Fierbird???
 (Romania)
Am cerut asa ceava. La ce l-as mai putea folosi sau de ce trebuie sa promit ca nu-l folosesc la altceva. Ce face in plus. Sau este pe bani???
Daca vrei sa mi-l trimiti te rog fa-o.


Mai se si glumeste pe aici :)
Bineinteles ca îl trimit.

 Treaba e ca dupa convertire (cu un trial care converteste decat 5 coloane),  numele tabelelor din Firebird sunt cu litere mici, eu asa le-am apelat in codul trimis dar tot imi da eroare ca nu cunoaste tabela.

Atunci ăla e de vină, poate ca aşa crează el tabelele implicit.

Care sunt pasii de la A la Z presupunand ca am convertit DBF into Firebird?
Adica ce trebuie sa configurez in ODBC si ce fel trebuie sa scriu codul ca sa creez o conexiune pe datele din firebird???


Absolut aceiaşi ca pentru MySQL sau SQL Server. Doar ca trebuie sa eviţi sa fie create obiectele aşa cum ţi-am spus.

Eu am o clasa API wrapper pentru Firebird, cu care poţi sa creezi baze de date, sa adaugi/modifici utilizatori.
Mai am si un progrămel simplu de mutat bazele, cu tot cu date.


 9/22/2005 4:49:40 AM
User is offlinevicos
139 posts
5th


Re: MySql sau Fierbird???
 (N/A)
Care este diferenta intre sintaxa SQL VFP si cea Firebird?
De ex care este sinonimul lui IIF() in Firebird, ca am cautat pe Net de mi-au iesit ochii in cap.

 9/22/2005 1:54:19 PM
User is offlineDorin Vasilescu
1366 posts
1st




Re: MySql sau Fierbird???
 (Romania)
 vicos wrote
Care este diferenta intre sintaxa SQL VFP si cea Firebird?
De ex care este sinonimul lui IIF() in Firebird, ca am cautat pe Net de mi-au iesit ochii in cap.



Diferenta e mare, in sensul ca dezvoltatorii Firebird tin mai mult la standardul SQL.

IIF vei gasi cand iese versiunea 2.0 :).
da nu-ti trebuie, ai CASE

SELECT CASE WHEN status=0 THEN 'Nevalidat' ELSE 'Validat' END as status_doc

Nu arata asa frumos ca IIF() da' merge.

Pe de alta parte exista biblioteci de UDF-uri care au implementate aceste functii, si multe altele.

http://rfunc.sourceforge.net/



 9/26/2005 3:30:24 PM
User is offlinevicos
139 posts
5th


Re: MySql sau Fierbird???
 (N/A)
Am o conexiune pe o tabela de 40.000 inregistrari dintr-o baza de firebird 1.5.
Din vfp un sqlexec dureaza 5.33,  pe cand din IB Expert dureaza 0 secunde (Prepare = 0 ms, Execute = 0ms, Indexed Reads = 0)

De ce oare ???

Iata exemplu din VFP, care merge ca racul:
Conexiune:
    PARA _lcname, _lsourcedb
    CREA CONN &_lcname CONNSTRING ;
        'DSN=ESTOC;Driver=Firebird/InterBase(r) driver;Dbname='    +_lsourcedb+ ';CHARSET=NONE;PWD=AGECMJAPIAALAIKKACABAMGGAKADEKADIHMBAMGLICAFADCNAOMDMKAHIOIIAACMADAJAKODACIEELALMPDKMDINCIBJ;UID=VICOS'
    STOR SQLCONNECT(_lcname) TO gnconnhandle
INC = SECONDS()
=SQLexec(1, "SELECT * FROM MyTable", 'FIREBIRD_MyTable')
TERM = SECONDS()
DURATA = ALLTRIM(STR(TERM - INC, 10, 2))
mesajtext(DURATA,'DURATA INTRUCTIUNE')

 9/27/2005 12:05:06 PM
User is offlinevicos
139 posts
5th


Re: MySql sau Fierbird???
 (N/A)
Am observat ca programul dbf2fb nu transfera si campurile MEMO.
Ce pot sa fac in aceasta privinta???
  Visual FoxPro  Visual FoxPro in general  MySql sau Fierb...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement