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  Baze de date, tabele, view-uri si indecsi  create table...
 create table
 
 9/20/2009 12:15:54 AM
User is offlineMariusvma
76 posts




create table
 (N/A)
Se poate crea cu ajutorul comenzii CREATE TABLE o tabela in care numele coloanei (campului) sa fie valoarea unei variabile? Adica: variabila1='sss' CREATE TABLE tabel (variabila1 c(10)) care sa aiba ca rezulat denumirea primei coloare cu valoarea variabilei, in cazul de fata 'sss'?
 9/20/2009 12:46:12 AM
User is offlineAdrian Gerlan
581 posts
1st




Re: create table
 (Romania)
CREATE TABLE tabel (&variabila1 c(10))
AdiG
 9/20/2009 1:28:40 PM
User is offlineMariusvma
76 posts




Re: create table
 (N/A)
 Adrian Gerlan wrote
CREATE TABLE tabel (&variabila1 c(10))
Multumesc mult, a mers.
 9/23/2009 1:04:26 PM
User is offlineMariusvma
76 posts




Re: create table
 (N/A)
 Mariusvma wrote
 Adrian Gerlan wrote
CREATE TABLE tabel (&variabila1 c(10))
Multumesc mult, a mers.
AM incercat sa folosesc metoda asta pentru crearea unei tabele din cadrul unui form, adica la un anumit eveniment sa se execute comanda de creare a tabelului, numele campului din tabelul nou creat fiind valoarea unui editbox din form (am folosit si combinatia thisform.text1.value si alocarea prin control source). Nu merge nici cu folosirea lui `&` nici fara el. Nu se poate?
 9/23/2009 2:11:22 PM
User is offlineandrei_veklinec
17 posts


Re: create table
 (N/A)
Se poate, dar trebuie sa fii atent la variabila pe care o definesti, sa aiba lungimea corespunzatoare (denumire cimp de max. 10 caractere la free table, respectiv 256 caractere la tabela inclusa intr-o baza de date) si sa aiba numai acele caractere recunoscute de vfp in denumirea tabelei sau a cimpului.
 9/23/2009 2:16:21 PM
User is offlineandrei_veklinec
17 posts


Re: create table
 (N/A)
rectific, denumire cimp max. 128 caractere la o tabela inclusa in baza de date
 9/23/2009 2:18:39 PM
User is offlineaflorin
840 posts
1st


Re: create table
 (N/A)
Se poate si asa:
lcCommand = 'CREATE TABLE ' + ALLTRIM(thisform.txtTableName.Value) + ' (' +
ALLTRIM(thisform.txtCamp1.Value) + ' C(12), ' +
...
&lcCommand

Florin Aparaschivei - Iasi
 9/23/2009 4:04:47 PM
User is offlineDaniel Buduru
2335 posts
1st




Re: create table
 (N/A)
 Mariusvma wrote
 Mariusvma wrote
 Adrian Gerlan wrote
CREATE TABLE tabel (&variabila1 c(10))
Multumesc mult, a mers.
AM incercat sa folosesc metoda asta pentru crearea unei tabele din cadrul unui form, adica la un anumit eveniment sa se execute comanda de creare a tabelului, numele campului din tabelul nou creat fiind valoarea unui editbox din form (am folosit si combinatia thisform.text1.value si alocarea prin control source). Nu merge nici cu folosirea lui `&` nici fara el. Nu se poate?


Undeva gresesti. Comanda este corecta. Incearca asta :

var1=thisform.text1.value
CREATE CURSOR crsTest1 ( (thisform.text1.value) c(10))
BROW NOWAIT
CREATE CURSOR crsTest2 (&var1 C(10))
BROW NOWAIT

Daniel Buduru
 9/23/2009 10:45:33 PM
User is offlineMariusvma
76 posts




Re: create table
 (N/A)
br>
Undeva gresesti. Comanda este corecta. Incearca asta :

var1=thisform.text1.value
CREATE CURSOR crsTest1 ( (thisform.text1.value) c(10))
BROW NOWAIT
CREATE CURSOR crsTest2 (&var1 C(10))
BROW NOWAIT
[/QUOTE] Am incercat si merge doar varianta cu definirea variabilei. Varianta cu (thisform.text1.value) pur si simplu nu merge.
 9/23/2009 11:02:12 PM
User is offlineDaniel Buduru
2335 posts
1st




Re: create table
 (N/A)
Scuze.

CREATE CURSOR crsTest1 ( (Trim(thisform.text1.value)) c(10))

Ruleaza asta:

PUBLIC oform
oform=CREATEOBJECT('testform')
oForm.Show()

DEFINE CLASS testform AS form
    DoCreate = .T.
    Name = "form1"

    ADD OBJECT text1 AS textbox WITH ;
        Height = 23, ;
        Left = 60, ;
        Top = 48, ;
        Width = 100, ;
        Name = "Text1", ;
        Format = "FT"
       
    ADD OBJECT command1 AS commandbutton WITH ;
        Top = 48, ;
        Left = 240, ;
        Height = 27, ;
        Width = 84, ;
        Caption = "Command1", ;
        Name = "Command1"

    PROCEDURE command1.Click
        IF !EMPTY(thisform.text1.Value)
            CREATE CURSOR crsxx ((thisform.text1.Value) c(10))
            BROWSE LAST nowait
        ENDIF
    ENDPROC
ENDDEFINE


Daniel Buduru
 9/23/2009 11:09:14 PM
User is offlineMariusvma
76 posts




Re: create table
 (N/A)
 aflorin wrote
Se poate si asa:
lcCommand = 'CREATE TABLE ' + ALLTRIM(thisform.txtTableName.Value) + ' (' +
ALLTRIM(thisform.txtCamp1.Value) + ' C(12), ' +
...
&lcCommand
Multumesc pentru solutia data, e originala si functionala.
 9/24/2009 10:08:43 AM
User is offlineMariusvma
76 posts




Re: create table
 (N/A)
 Mariusvma wrote
br>
Undeva gresesti. Comanda este corecta. Incearca asta :

var1=thisform.text1.value
CREATE CURSOR crsTest1 ( (thisform.text1.value) c(10))
BROW NOWAIT
CREATE CURSOR crsTest2 (&var1 C(10))
BROW NOWAIT
Am incercat si merge doar varianta cu definirea variabilei. Varianta cu (thisform.text1.value) pur si simplu nu merge.[/QUOTE] Merge si cu thisform.text1.value, dar doar daca se foloseste impreuna cu ALLTRIM(). Multumesc inca o data.
 9/24/2009 10:11:55 AM
User is offlineMariusvma
76 posts




Re: create table
 (N/A)
Merge. Va trebui sa ma obisnuiesc sa folosesc mai des TRIM() si ALLTRIM(), se pare ca lispsa efectele lor benefice ma blocheaza.
 9/24/2009 11:07:44 AM
User is offlineaflorin
840 posts
1st


Re: create table
 (N/A)
 Mariusvma wrote
Merge. Va trebui sa ma obisnuiesc sa folosesc mai des TRIM() si ALLTRIM(), se pare ca lispsa efectele lor benefice ma blocheaza.


Sa nu le folosesti totusi prea des. In exemplul de mai jos, ALLTRIM este moarte curata pentru performanta:
SELECT *
FROM myTable
WHERE ALLTRIM(Nume) = 'aflorin'

Florin Aparaschivei - Iasi
 9/24/2009 12:05:02 PM
User is offlineGrigore Dolghin
3590 posts
www.class-software.eu
1st






Re: create table
 (N/A)
 Mariusvma wrote
Merge. Va trebui sa ma obisnuiesc sa folosesc mai des TRIM() si ALLTRIM(), se pare ca lispsa efectele lor benefice ma blocheaza.


Daca pui in proprietatea .Format a textboxului litera T, .Value va returna textul din textbox, fara spatii, deci nu mai ai nevoie de alltrim().

Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 9/24/2009 8:19:38 PM
User is offlineDaniel Buduru
2335 posts
1st




Re: create table
 (N/A)
 Grigore Dolghin wrote
 Mariusvma wrote
Merge. Va trebui sa ma obisnuiesc sa folosesc mai des TRIM() si ALLTRIM(), se pare ca lispsa efectele lor benefice ma blocheaza.


Daca pui in proprietatea .Format a textboxului litera T, .Value va returna textul din textbox, fara spatii, deci nu mai ai nevoie de alltrim().

Asta am eu in clasa textbox pe care am facut testul, test care a mers, asa ca am dat codul fara TRIM() . In exemplul pe care l-am postat ulterior formatul textbox-ului e "FT"

Echipa VFP nu a fost prea consecventa cu trimarea implicita a stringurilor.
Exemplu:
xx='ABC           '
? ADDBS(xx) &&trimeaza
? FORCEEXT(xx,'TXT') &&trimeaza
in schimb, in numele campului din CREATE TABLE nu trimeaza, desi spatiile din coada numelui campului nu sunt acceptate si genereaza o eroare.
De aceea e mai util de stiut ce eroare a aparut, decat un sec "Nu merge".

O alta modalitate de a crea tabela in cod este CREATE ... FROM ARRAY.


Daniel Buduru
 9/24/2009 11:29:05 PM
User is offlineMariusvma
76 posts




Re: create table
 (N/A)
 Daniel Buduru wrote
 Grigore Dolghin wrote
 Mariusvma wrote
Merge. Va trebui sa ma obisnuiesc sa folosesc mai des TRIM() si ALLTRIM(), se pare ca lispsa efectele lor benefice ma blocheaza.


Daca pui in proprietatea .Format a textboxului litera T, .Value va returna textul din textbox, fara spatii, deci nu mai ai nevoie de alltrim().

Asta am eu in clasa textbox pe care am facut testul, test care a mers, asa ca am dat codul fara TRIM() . In exemplul pe care l-am postat ulterior formatul textbox-ului e "FT"

Echipa VFP nu a fost prea consecventa cu trimarea implicita a stringurilor.
Exemplu:
xx='ABC           '
? ADDBS(xx) &&trimeaza
? FORCEEXT(xx,'TXT') &&trimeaza
in schimb, in numele campului din CREATE TABLE nu trimeaza, desi spatiile din coada numelui campului nu sunt acceptate si genereaza o eroare.
De aceea e mai util de stiut ce eroare a aparut, decat un sec "Nu merge".

O alta modalitate de a crea tabela in cod este CREATE ... FROM ARRAY.

Mesajul de eroare e „Syntax error”. Am observat si din exemplul tau ca variabila conteaza de fapt. Preluarea comenzii cu ajutorul variabilei e OK, dar fara ea pur si simplu da acest mesaj de eroare.
 9/24/2009 11:31:38 PM
User is offlineMariusvma
76 posts




Re: create table
 (N/A)
 Daniel Buduru wrote
 Grigore Dolghin wrote
 Mariusvma wrote
Merge. Va trebui sa ma obisnuiesc sa folosesc mai des TRIM() si ALLTRIM(), se pare ca lispsa efectele lor benefice ma blocheaza.


Daca pui in proprietatea .Format a textboxului litera T, .Value va returna textul din textbox, fara spatii, deci nu mai ai nevoie de alltrim().

Asta am eu in clasa textbox pe care am facut testul, test care a mers, asa ca am dat codul fara TRIM() . In exemplul pe care l-am postat ulterior formatul textbox-ului e "FT"

Echipa VFP nu a fost prea consecventa cu trimarea implicita a stringurilor.
Exemplu:
xx='ABC           '
? ADDBS(xx) &&trimeaza
? FORCEEXT(xx,'TXT') &&trimeaza
in schimb, in numele campului din CREATE TABLE nu trimeaza, desi spatiile din coada numelui campului nu sunt acceptate si genereaza o eroare.
De aceea e mai util de stiut ce eroare a aparut, decat un sec "Nu merge".

O alta modalitate de a crea tabela in cod este CREATE ... FROM ARRAY.

De fapt nici cu allltrim(thisform.text1.value) nu merge, mesajul de eroare fiind acelasi, dar de aceasta data mesaj receptionat la momentul intentionarii salvarii codului. Abia cu (alltrim(thisform.text1.value)) a fost OK.
 9/24/2009 11:50:09 PM
User is offlineDaniel Buduru
2335 posts
1st




Re: create table
 (N/A) Modified By Daniel Buduru  on 9/24/2009 11:50:43 PM)
Merge nu din cauza preluarii valorii in variabila, ci din cauza mocrosubstitutiei (&), care nu poate fi aplicata unei proprietati.
Daca incerci asta:
var1=thisform.text1.value
create cursor xxx ((var1) c(10))
vei primi acelasi mesaj de eroare: Sintax Error. Asta pentru ca numele campului contine spatii (variabila nu e trimata)
Dar var1=trim(thisform.text1.value)
create cursor xxx ((var1) c(10))
nu va genera eroare
In cazul macrosubstitutiei, in comanda create cursor &var1 este inlocuit cu var1, iar comanda va fi:
var1='aaa       '
Create cursor xxx (&var1 C(10))
va fi citita de vfp asa:
Create cursor xxx (aaa        C(10))
iar spatiile dintre aaa si C sunt ignorate
In cazul substitutiei de nume, respectiv punerea variabile intre paranteze, comanda va arata oarecum asa (nu cu apostroafe, dar n-am cum sa arat altfel):
create cursor xxx ('aaa     ' c(10))
spatiile fac parte din numele campului.
Cum spatiile nu sunt admise intr-un nume de camp, semnaleaza o eroare de sintaxa.




Daniel Buduru
  Visual FoxPro  Baze de date, tabele, view-uri si indecsi  create table...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement