58
A VisualFoxpro adatbázisfejlesztő rendszer
  • Nellie
    #58
    Sziasztok. Szuksegem lenne a segitsegetekre. Kell keszitsek egy projektet a Visual FoxPro 8-ba, es elakadtam egy egyszerunek tuno resznel. Keszitettem egy tablet, de a gondom az, hogy nem tudom megnyitani…probaltam File->Open-nel…nem nyitja meg, probaltam ugy is, hogy a Command reszhez beirtam Use es a tablam nevet…de nem nyilik meg. Hogyan tudom megnyitni?? Mit csinalok rosszul? Kerlek segitsetek mert szorit a hatarido :(((
  • misike19550906
    #57
    Sziasztok

    ez az email jól müködik egy email címre de több címet is szeretnék megadni és egyszerüen már mindent próbáltam de nem jön össze ha beteszem egy ciklusba akkor meg minden kuldesnél rá kell az outlookban kattintani a küldés gomra ami 10-12 névnél elég strapás.

    előre is köszönöm mert ez most eléggé fontos és sűrgős lenne nekem ha tudnátok segíteni

    ***************** E-MAIL KULDES ***************************************

    mess1=createobject("msmapi.mapimessages")

    sess1=createobject("msmapi.mapisession")

    sess1.signon

    mess1.sessionid=sess1.sessionid

    mess1.msgindex=-1

    mess1.compose

    mess1.recipdisplayname=trim('[email protected]')

    mess1.recipaddress=""

    mess1.msgnotetext= 'HHHH'

    mess1.msgsubject="HIBA!"

    *if _screen.activeform.op1.value=2

    * mess1.attachmentpathname=pcsatolt

    *endif

    mess1.send(1)

    sess1.signoff

    ***************** E-MAIL KULDES VEGE **********************************

  • Qwerty4
    #56
    Hello!

    Egyelőre röviden:van nekem egy táblám egy adatbázisban.A táblázatban vannak dátum mezők, karakter mezők és numerikus mezők (összesen 9).
    Készítettem egy form-ot (űrlapot), az űrlapon vannak text mezők, annyi darab, amennyi szükséges a tábázat kitöltéséhez űrlap segítségével (text1 - text9).
    A parancs gombnál az űrlap programozásánál pontosan milyen parancssort kell beírni (sablon van?), hogy az űrlap indítása után a text boxokba beírt adatok a táblázatba, minden a neki megfelelő helyre kerüljön?
    Remélem érthetően írtam.

    De azért példa:
    Van egy táblánk 2 mezővel:kod, nev.A kódhoz tartozna a text1,a nevhez a text 2.
    Én így írnám a prancsot, de mi a hiba benne?:
    "kod = val(alltrim(thisform.Text1.value))
    nev = alltrim(thisform.Text2.value)
    insert into tabla values (kod, nev)
    =MessageBox('A felvitel sikerült', 0, 'Művelet eredménye')"

    Ennek eredmánye midnig az, hogy nem az újonnan beírt szöveget másolja a táblába, hanem a korábban appenddel kitöltött adatok első sorát másolja újra be...
  • Kabai Henrik
    #55
    Sziasztok!

    Készítettem egy "outlook.application" -t, ez megy is addig amig a gépen
    van telepítve ofisz.
    Szeretnék egy "outlookexpress.application" -t is készíteni.
    Ebben tud e valaki segíteni.

    Előre is kösz a segítséget.

    Henrik
  • aquila28
    #54
    VISUAL FOXPROBAN jártas partnereket keresek, kiskereskedelmi-vendéglátós
    rendszer terjesztés, menedzselés fejlesztés területén együttműködéshez.
    http://aquila-development.freeweb.hu/
    Ha érdekel irj !
    (Ez nem álláshírdetés ! Csak "szövetségeseket" keresünk :)
  • hadosoft
    #53
    Sziasztok !

    Valaki tért át már VFP 5.0-ról 9.0-ra ? Hogy sikerült ?
    Gondolom van szívás ! :)
    Írjon valaki nekem egy kis infót, mert a 9.0 is 200 ropi.

    Gyerekek !!... :( Az MS megint "csőre" húz minket :

    http://www.hwsw.hu/hirek/33086/microsoft_visual_foxpro_studio_sql_server_orcas_sedna.html
  • hadosoft
    #52
    Szia !

    VFP 5.0-ben csináltam hasonlót. Draft-ban kellet mátrix nyomtatóra müldenem számlákat meg szállítót. Úgy csináltam meg, hogy a report fájl minden sora egy mezőből állt és ebben adtam meg a nyomtatandó string kifejezést és az ESC vezérlő karaktereket is. Ezek után ezt némi átalakítás után a Copy parancsal kiküldtem a nyomtatóra. Itt a kód :

    *>> Leporellóra :
    cFnp = Substr(cFn,2)
    noszel = _ASCIICOLS
    _ASCIICOLS = 150

    Osszlap = 1
    peldany = 1

    ** Ellenőrzés, nyomtatás :

    On Error lHiba = .T.

    *teszteléshez******************************
    * Report All Form &cFn Noconsole Preview
    *******************************************

    For nCik = 1 To 5
    lHiba = .F.
    *lf = Sys(2023)+"\"+Alltrim(Sys(3))+".TXT"
    lf = Sys(2023)+"\"+SUBSTR(SYS(2015), 3, 10)+".TXT"
    Report All Form &cFn Noconsole To File (lf) ASCII
    If lHiba = .F.
    Exit
    EndIf
    EndFor

    ON ERROR ErrHand(ERROR(),PROGRAM(),LINENO())

    *messagebox(cfn+space(1)+lf)

    *>> Nyomtatás, ha nincs hiba
    If !lHiba
    Osszlap = _pageno
    If Thisform.Megjel.Listindex > 1
    Sele bizfej
    Report All Form &cFnp Noconsole Preview
    Endif


    If Thisform.Megjel.Listindex < 3
    Sele bizfej
    Report All Form &cFn Noconsole To File (lf) ASCII

    * Konverzió :
    *lc = Sys(2023)+"\"+Alltrim(Sys(3))+".TXT"
    lc = Sys(2023)+"\"+SUBSTR(SYS(2015), 3, 10)+".TXT"
    f1 = FOPEN(lf,12)
    f2 = FCREATE(lc)
    IF f1 < 0 or f2 < 0
    MessageBox("Listafájlt nem tudom elérni !",16,"A nyomtatás sikertelen !")
    ELSE
    Do While !Feof(f1)
    cS = CpConvert(CpCurrent(),852,FGet(f1))
    =FPUTS(f2, cS)
    EndDo
    ENDIF
    *Utolsó soremelésjel :
    =FCLOSE(f1)
    =FCLOSE(f2)

    * DOS Nyomtatás :
    * if Messagebox("Nyomtat ?",4,"") = 6
    For nMs = Thisform.Nyompld2.Value To ig
    peldany = nMs
    lHiba = .F.
    On Error lHiba = .T.
    Do Case
    Case lepo = 1
    Copy File (lc) To LPT1
    Case lepo = 2
    Copy File (lc) To LPT2
    Otherwise
    Copy File (lc) To PRN
    EndCase
    ON ERROR ErrHand(ERROR(),PROGRAM(),LINENO())
    If lHiba = .F.
    *Utolsó soremelésjel :
    ??? Chr(12)
    Else
    MessageBox("Nyomtató nem elérhető !",16,"A nyomtatás sikertelen !")
    Exit
    EndIf
    EndFor
    Delete File (lc)
    Delete File (lf)

    *** Másolat küldése :
    If Left(bsz,1) = "3"
    ThisForm.printer.CopyPrinter
    ig = nMs
    For nMs = ig To epldsz+ig-1
    Sele bizfej
    peldany = peldany+nMs
    Report All Form &cFn Noconsole To Printer
    Endfor
    Endif

    Endif
    _ASCIICOLS = noszel
    Else
    MessageBox("Listafájlt nem tudom elérni !",16,"A nyomtatás sikertelen !")
    EndIf

    Remélem valamiben tudtam Neked segíteni. :)
  • panyacs
    #51
    Helloka! Tudom, hogy a visualról szól a fórum, viszont vannak alkalmazásaim, amik még 2.0-ban írtam. Ebben kell most módosítanom, és nem tudom mit tegyek. TXT-t kell készítenem számlaadatok átadásához 1500 széles sorokkal. Nyomtatás fájlba átírányírtással foxpro 255 környékén megtöri ha simán csak kiiratással próbálom elkészíteni. Mivel pozicionálni kell, ezt találtam leggyorsabb megoldásnak. Ha egy válltozóba rakom össze, ha hosszabb 256-nál már hibával leáll.Ha van valakinek ötlete szívesen veszem a [email protected] címre! Köszi
  • gottoka
    #50
    hello mindenkinek.lenne egy nagy keresem,ha valaki tudja hogyan kell mukodo programot letrehozni visual foxproban,vagy barmi ami vele kapcsolatos nagyon kerem irjon a [email protected] cimre nagyon koszi megegyszer
  • nyunyivagyok
    #49
    jol pörög ez a topik
  • nyunyivagyok
    #48
    hi!

    az lenne akérdésem hogy egy kész programból vki vissza tudja fejteni a forrás filát?Ill ha akarok változtani a programon akkor mindeképp kell a forrás file?

    köszönet
  • nayan
    #47
    Sziasztok segítsetek már zavaros szelem képes:kékes,zöldes,lillás a monitor.szerintettek mi lehet ez? Köszi.
  • eaca
    #46
    Sziasztok!
    Valaki tudna segíteni egy magyar oldal linkjével, ahol bővebb információt találok a Foxpro 9.0-ról és technológiáiról?

    THX
  • kosztrub
    #45
    Sziasztok!
    Segítséget szeretnék kérni. Osztálynaplót kellenne készítenem FoxPRo 9.0-ban,de sajna fogalmam sincs, hogy hogyan kezdjek neki. Se E-K modellem nincs és ötletem se. Ha valaki tud segíteni, azt nagyon megköszönném
    email címem: [email protected]
  • Trade
    #44
    Sziasztok!
    Szeretnék egy adatbázis csinálni ami a Cheat2000-hez hasonlo kinezetu
    A felhasznalok kesobb barmilyen adatbazis kezelo hasznalata nelkul egyszeruen
    hozzaadhatnak az adatokat.
    elore is nagyon koszi
  • PetruZ
    #43
    A százezer rekord az nudli, a nagy adatbázis úgy tízmilliós nagyságrendnél kezdődik. :)

    De egyébként ezt nem tudod megcsinálni FoxPro-ban (automatikusra), csak akkor, ha te programozod a keresést. Nem tudom, milyen típusú adatbázisról van szó, de a legtöbb nem fogja neked a belső működését megmutatni (nem fogja megmondani, hol tart az indexelésben, vagy a sorok leválogatásában, mert ez nem ilyen egzakt dolog; az adatbázisok belső működése majdhogynem külön tudomány :) ), csak azt tudod számolni, hogy a lekérdezés végén hány sor jött, és a sorok át-fetch-elése hol tart. Ha ezt meg akarod jeleníteni, az programozott dolog, nincs rá automatika. Ez esetben neked kell pl. a progressbar-t vezérelni.
  • nippy
    #42
    Én azért egyszerübb dologra gondoltam :)

    Pl.
    van egy nagy adatbázis (néha 100000 record feletti)
    ezt indexelni, ebből leválogatni sql-es parancsokkal is időígényes
    ezt szeretném látni, hogy épp hol tart.

    (az automatikus csak a csík megjelenítése lenne)


  • PetruZ
    #41
    Mit jelent az, hogy automatikusan? Mit kell dolgoznia? Sejtem, mire gondolsz, de vajon tudod-e, hogy mire gondolsz, és mit akarsz megvalósítani? :) Biztosan automatikusan kellene mennie?
    Az ilyesféle event kezelés kicsit tág témakör, úgy nagyjából a modern programozás háromnegyedét valamilyen szinten érinti...
  • nippy
    #40
    Most már csak az érdekelne, hogy hogyan foglalod keretbe a folyamatot ?
    pl.
    olecontrol1.value=0,0001 & az induló érték

    de hogy fog automatikusan dolgozni ?



  • nippy
    #39
    Köszi !
  • PetruZ
    #38
    Pl. nyiss egy új Form-ot, a toolbar-ról dobj rá egy ActiveX Control (OLEControl) objektumot. A megnyíló listában keresd meg pl. a Microsoft ProgressBar Control 6.0-át, majd méretezd kedved szerint. Bizonyos paramétereit beállíthatod kézzel, ha jobbklikket nyomsz rá, majd a menüben a ProgCtrl Properties pontot választod. Ugyanezek a property-k (és a többi is, ami nincs itt), programozás oldaláról is elérhető (pl. az olecontrol1.value kell neked a pozíció beállításához). A pontos leírásokat az MSDN Library-ből tudod előásni.
  • nippy
    #37
    Használtál már activeX-et ? Mert én még nem, ha egy kis iránymutatót adnál, nagyon megköszönném.
  • PetruZ
    #36
    Nincs, neked kell megírni, vagy használhatsz vmi külső (jellemzően OCX v. ActiveX) komponenst. Ez már kicsit túlmutat az alap FoxPro programozáson.
  • nippy
    #35
    Van arra külön parancs, ha feldolgozottságot szeretnék megjelentettni, ugyan úgy mint amikor megy egy install és %-osan húzza a csikot ?


  • PetruZ
    #34
    Nem hinném, az MSDN library szerint is ezt, ilyen formában érdemes használni, nincs megkülönböztetés. Bár előfordulhat, hogy a hivatkozás hibás / hiányos. :)
  • nippy
    #33
    Lehet hogy az excel 2003 -mal van a hiba ?

    7-es FoxPro-val próbáltam

    Meg fogom nézni egy másik gépen ahol 97-es office van.

  • PetruZ
    #32
    Excel van telepítve a gépre, ahol próbálod? Nálam pár éve 7-es és 8-as FoxPro-val működött Excel 95-től 2000-ig. Már nem Fox-ozok, a részlet egy régi alkalmazásom forrásából van, amit széles körben használt a volt cégem, gond nélkül.
    A gépemen van egy Fox8-as, most kipróbáltam rajta, de nekem működik. Igaz, nincs Office a gépemen, de nem a GetObject(()-tel van baja, hanem az else ággal, ugyanis nem tud Excel objektumot kreálni (ahogy az logikus is).
    Ennyi volt az egész program:

    if type( 'GETOBJECT(, "Excel.Application")' ) = "O"
    OLEExcel=GETOBJECT(, "Excel.Application")
    else
    OLEExcel=CreateObject("Excel.Application")
    endif
    with OLEExcel
    .Visible=.t.
    endwith
    release OLEExcel

    Compile lement, futtatás is megy. Sztem valamit kihagytál / elgépeltél (idézőjelek, vesszők nem mindegy, hol vannak).
  • nippy
    #31
    Már a GETOBJECT -re hibát jelez ,hogy "OLE hiba :a művelet nem hajtható végre"

    Kicsit tanácstalan vagyok..




  • PetruZ
    #30
    Ja, pár éve kellett, akkor OLE-n keresztül csináltam - de baromi lassú.
    Pl.:

    ...
    if type( 'GETOBJECT(, "Excel.Application")' ) = "O"
    OLEExcel=GETOBJECT(, "Excel.Application")
    else
    OLEExcel=CreateObject("Excel.Application")
    endif
    with OLEExcel
    .Visible=.t.
    .workbooks.open(fájlnév, 0, .f.)
    .sheets(1).select
    ...
    Innentől kezdve elméletileg a teljes VBA scripting funkcionalitás a rendelkezésedre áll, csak ne feledkezz meg az előpontokról, hogy az OLEExcel objektumon keresztül dolgozzon. A FoxPro-t nem érdekli, hogy a számára többnyire értelmetlen dolgok lehetnek itt, ő szépen továbbpasszolja majd az Excelnek.
    ...
    release OLEExcel
    ...

    Megismétlem: ez egy nagyon lassú módszer...
  • nippy
    #29
    Valaki próbált már egy létező EXCEL file-ba adatokat irni ?

    Ha igen érdekelne

    Új excel file-t gond nélkül lehet készíteni.

    Esetleg valakinek ötlete ?
  • Laza
    #28
    Koszi, mar talaltam...
  • Laza
    #27
    Hali all...

    Ha vkinek van VFP5-os futtato kornyezet (kb 3 dll), plz linkelje mar be, vagy irjon, ha at tudna kuldeni...
    koszi...
  • PetruZ
    #26
    Nem pontosan, bár arra is használható (csak fordítva): ahogy írtam, a mérkőzés azonosító plusz a játékosazonosító alkotna még egy új egyedi kulcsot a statisztika táblán (ez garantálja, hogy egy játékos egy mérkőzésen csak egy statisztikai sorral rendelkezzen). A játékosnevek táblán a játékos azonosító természetesen önmagában egyedi kulcs és az kapcsolódik 1:N-el a statisztika táblához.
  • rushman
    #25
    Kitűnő!

    ...játékos azonosító szintén külön egyedi kulcsot alkotna.

    1-N kapcsolattal a [játékosnevek] tábla azonosító kulcsához?
  • PetruZ
    #24
    Még valami: ha szükséges, hogy az egyes fordulókban egy csapat csak egyszer szerepelhessen, akkor a legegyszerűbb megoldás, ha a mérkőzés táblában az egyedi mérkőzésazonosító megmarad, de ezen felül a forduló sorszámából, a mérkőzésazonosítóból és a két csapat azonosítójából egy újabb egyedi kulcsot kell képezni (a forduló dátuma nem jó, mert egy forduló több napon át is tarthat és halasztás is lehet). Ezek összekapcsolása a statisztika táblával *nem* szükséges (nincs is mivel), csak az egyediséget garantálja. Az egyes adatokat a csapatok adattábláival lehet összekapcsolgatni.
  • PetruZ
    #23
    Hát, én mondjuk elsőre azt csinálnám, hogy az eredménytáblába elhelyeznék egy egyedi kulcsot (mondjuk egy folytonosan növekvő szám is jó; unique key index, ha így ismerősebb). A statisztika táblának ez idegen kulcsa (foreign key) lenne, az eredmény - statisztika között 1:N kapcsolattal. A statisztika táblán ez a mérkőzésazonosító plusz a játékos azonosító szintén külön egyedi kulcsot alkotna.
    Így az egyediséget minden esetben le lehet fedni, az adatok összekapcsolása pedig a mérközésazonosító alapján egyértelmű (egy mérkőzéshez több stat sor tartozhat, de mindegyiknek csak egy játékos sora lehet a második unique key miatt). A korlátokról maga az adatbázis gondoskodik a két unique megszorítás miatt.

    Pl. (csak nagyon vázlatosan, a konkrét táblastruktúra ismeretében tovább finomítható, csiszolható):
    -egy játékos adatai egy adott mérkőzésen: select a.*, b.* from merkozes a, stat b where a.merkozes_id = b.merkozes_id and b.jatekos_id = XXX and a.merkozes_id = YYY;
    -egy játékos mely mérkőzéseken játszott: select a.* from merkozes a, stat b where a.merkozes_id = b.merkozes_id and b.jatekos_id = XXX;
    És így tovább. A lényeg a két tábla összekapcsolása a merkozes_id alapján, a többi már gyerekjáték.
  • rushman
    #22
    Lenne agy kapcsolatos kérdésem, egy labdarúgás hasonlattal élnék, hátha így könnyebben értelmezhető:

    Egy fordulóban több mérkőzés is lehet, de minden csapat csak egyszer játszhat(mérkőzéseredmények tábla). Egy fordulóban egy csapat több játékosának rögzíthető a teljesítménye (gól, gólpassz stb.), de mindegyiknek csak egyszer(játékosstatisztika tábla).

    A mérkőzéseredmények és a játékosstatisztikák egy-egy külön táblában vannak tárolva. Ennek a rendszernek a kapcsolatait kellene úgy megoldanom, hogy az említett "törvények" teljesüljenek, és az adatok könnyen lekérdezhetők legyenek.
    Várom a megoldásokat!
  • PetruZ
    #21
    Ha ilyet akarsz, azokat a változókat az eljárásokon kívül, a modul fejlécében public-ként kell deklarálni.
  • rushman
    #20
    Amint látod, még csak kóstolgatom ezt a dbase elvet...

    Arra akartam kijukadni, hogy egy modulon belüli eljárások EGY változót használjanak egy bizonyos adat kezeléséhez. Pl az egyik eljárás feltölti, míg a másik lekérdezi stb. Vagy egy boolean változó értékét több eljárás is figyelhesse ecc.
  • PetruZ
    #19
    Valamit keversz: ami leírsz, azt elvileg nem is szabad megengedni és szerencsére nem is működik. Akkor lenne még csak nagy balhé, ha az egy modulban szereplő eljárások látnák egymás változóit. Eljárás public-ként való deklarálásának nincs is értelme, viszont a(z osztály) metódus és az eljárás/függvény a VFP-ben (is) eltér, nem ugyanaz a működési mechanizmus!