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  Parametru de ti...
 Parametru de tip data transmis catre SQL Server
 
 10/27/2010 8:07:32 AM
User is offlineRomeo
529 posts
1st


Parametru de tip data transmis catre SQL Server
 (N/A) Modified By Romeo  on 10/27/2010 8:08:42 AM)

 Intr-un tabel SQL server am campul zi de tipul datetime; vreau sa sterg inregistrarile corespunzatoare unei zi, folosind SQLExec si parametrul ThisForm.data, de tip date. Am recurs la urmatoarea solutie, care a mers dar mi se pare cam artificiala:

lcData=ALLTRIM(STR(YEAR(ThisForm.data)))+"-"+PADL(ALLTRIM(STR(MONTH(ThisForm.data))),2,'0')+"-"+PADL(ALLTRIM(STR(DAY(ThisForm.data))),2,'0')
wok=SQLEXEC(lnConnHandle,"DELETE FROM rp_turare WHERE LEFT(CONVERT(VARCHAR, zi, 120), 10)=?lcData")

Are cineva o solutie mai eleganta ?


Slava Tatalui si Fiului si Sfantului Duh si acum si pururea si-n vecii vecilor. Amin.
 10/27/2010 11:05:06 AM
User is offlineaflorin
840 posts
1st


Re: Parametru de tip data transmis catre SQL Server
 (N/A)
LEFT si CONVERT pe clauza WHERE sunt foarte bune daca vrei sa ai mari probleme de performanta.
Incearca sa transformi in ceva de genul:
DELETE FROM rp_turare WHERE zi = ?lcData

Florin Aparaschivei - Iasi
 10/27/2010 11:08:54 AM
User is offlineaflorin
840 posts
1st


Re: Parametru de tip data transmis catre SQL Server
 (N/A)
Uite si un articol care ar putea sa te ajute.
Florin Aparaschivei - Iasi
 10/27/2010 11:22:06 AM
User is offlineGrigore Dolghin
3590 posts
www.class-software.eu
1st






Re: Parametru de tip data transmis catre SQL Server
 (N/A)
 Romeo wrote

 Intr-un tabel SQL server am campul zi de tipul datetime; vreau sa sterg inregistrarile corespunzatoare unei zi, folosind SQLExec si parametrul ThisForm.data, de tip date. Am recurs la urmatoarea solutie, care a mers dar mi se pare cam artificiala:

lcData=ALLTRIM(STR(YEAR(ThisForm.data)))+"-"+PADL(ALLTRIM(STR(MONTH(ThisForm.data))),2,'0')+"-"+PADL(ALLTRIM(STR(DAY(ThisForm.data))),2,'0')
wok=SQLEXEC(lnConnHandle,"DELETE FROM rp_turare WHERE LEFT(CONVERT(VARCHAR, zi, 120), 10)=?lcData")

Are cineva o solutie mai eleganta ?



ldDataStart = ThisForm.Data
ldDataEnd = ThisForm,Data + 1
SQLExec(lnConnHandle, "DELETE FROM rp_turare WHERE zi >= ?ldDataStart And zi < ?ldDataEnd")

Cod netestat - verifica daca functioneaza corect. Ideea e sa lucrezi cu mai mare si mai mic ca sa prinzi intervalul. Index pe campul zi OBLIGATORIU.

Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 10/27/2010 12:11:29 PM
User is offlineDaniel Buduru
2335 posts
1st




Re: Parametru de tip data transmis catre SQL Server
 (N/A)
Situatia asta - camp de tip datetime comparat cu valoare de tip date - apare foarte frecvent.
Poti pune in tabela o coloana calculata (computed column) in care sa tii partea date din datetime.

Daca serverul e 2008, exista deja tipul Date, la fel ca si in VFP, si in formula coloanei pui CAST(coloanadatetime  as date).

Daca e 2005, atunci folosesti formula CONVERT(char(8), coloanadatetime, 112) iar comparatia o faci cu un string yyyymmdd, pe care in vfp il obtii cu DTOS(date)

Poti indexa o coloana calculata.

Daniel Buduru
 10/28/2010 8:49:16 AM
User is offlineRomeo
529 posts
1st


Re: Parametru de tip data transmis catre SQL Server
 (N/A)

Grig, solutia ta merge si este practica pt programator; atunci cand fac insert  (... zi,...)  values (... ThisForm.date, ) in campul datetime partea cu ora primeste automat 0 0 0 0. Presupun ca asta estye o chestie implicita si documentata explicit pe undeva prin help

 Daniel Buduru wrote
Daca serverul e 2008, exista deja tipul Date, la fel ca si in VFP, si in formula coloanei pui CAST(coloanadatetime  as date).
Poti indexa o coloana calculata.

Pe un SqlServer Express nu am gasit valoarea predefinita date, in coloana Data Type (atunci cand modific tabelul in mod design). Jos in Column Properties, am proprietatea (linia) Computed Column Specification, si linia (Formula), dar nu stiu ce tip de data sa atribui campului testzi, camp care ar urma sa primeasca vloarea date din campul zi (datetime).


Slava Tatalui si Fiului si Sfantului Duh si acum si pururea si-n vecii vecilor. Amin.
 10/28/2010 10:39:51 AM
User is offlineGrigore Dolghin
3590 posts
www.class-software.eu
1st






Re: Parametru de tip data transmis catre SQL Server
 (N/A)
Tipul date a fost introdus in SQL Server 2008. SQL Server Express 2008 si SQL Server Express 2008 R2 il au.

Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 10/28/2010 11:49:43 AM
User is offlineRomeo
529 posts
1st


Re: Parametru de tip data transmis catre SQL Server
 (N/A)

De folosit tipul date in T-SQL nu e greu. ( http://msdn.microsoft.com/en-us/library/ms186724.aspx ) - SQL Server 2008 R2 Express. Nu am reusit sa construiesc un tabel care sa accepte un camp cu Data Type ( date ) nici vizual din Enteprise Manager nici dintr-o fereastra de interogare (Enteprise Manager). Daca vreau sa construiesc un tabel

CREATE TABLE [dbo].[test](
 [id] [uniqueidentifier] NOT NULL,
 [unitate] [numeric](4, 0) NULL,
 [zi] [datetime] NULL,
 [datatest] [DATE] NULL,
) ON [PRIMARY]

primesc mesajul de eroare:  Msg 2715, Level 16, State 7, Line 1 Column, parameter, or variable #4: Cannot find data type DATE.


Slava Tatalui si Fiului si Sfantului Duh si acum si pururea si-n vecii vecilor. Amin.
 10/28/2010 12:17:29 PM
User is offlineDaniel Buduru
2335 posts
1st




Re: Parametru de tip data transmis catre SQL Server
 (N/A) Modified By Daniel Buduru  on 10/28/2010 12:22:24 PM)
Esti sigur ca rulezi pe un server 2008?
Ce returneaza  select @@VERSION ?

Aici e scriptul generat de ssms :

CREATE TABLE [dbo].[test](
    [id] [uniqueidentifier] NOT NULL,
    [unitate] [numeric](4, 0) NULL,
    [zi] [datetime] NULL,
    [datatest] [date] NULL,
    [computed_data]  AS (CONVERT([date],[zi],0))
) ON [PRIMARY]

GO

Tipul de date al unei coloane calculate rezulta din evaluarea formulei si nu se specifica in structura.


Daniel Buduru
 10/28/2010 1:16:21 PM
User is offlineRomeo
529 posts
1st


Re: Parametru de tip data transmis catre SQL Server
 (N/A)

Ai dreptate. Aveam un Enteprise Manager 2008 R2 si un SQLServer 2005 Express. Am testat pe o alta statie cu SQL 2008 R2 Express si totul e ok.

Am instalat SQL Server 2008 R2 Express peste 2005 Express; vad ca am Engine-ul de 2005 si Enteprise Manager de 2008 R2; nu mi-a trecut prin cap ca s-ar putea intampla una ca asta. Acum trebuie sa opresc tot din Services, sa dezinstalez tot dupa care sa reinstalez 2008 R2 ? Nu gasesc pe nicaieri engin-ul de 2008.


Slava Tatalui si Fiului si Sfantului Duh si acum si pururea si-n vecii vecilor. Amin.
 10/28/2010 1:43:42 PM
User is offlineDaniel Buduru
2335 posts
1st




Re: Parametru de tip data transmis catre SQL Server
 (N/A)
Pot coexista diferite versiuni SQL Server pe aceeasi masina. Eu am 2005, 2008, 2008 R2 pe acceasi masina. SSMS se poate conecta la oricare din ele.
Specifica serverul 2008 cand te conectezi in SMSS, si e suficient.
In SQL Server Installation Center ai o optiune de upgrade. Daca o selectezi, vei putea alege instanta pe care vrei sa o upgradezi, si sa o aduci de la 2005 la 2008.
Dezinstalarea si reinstalarea nu ajuta, bazele de date isi vor pastra versiunile.


Daniel Buduru
  Visual FoxPro  Client/Server  Parametru de ti...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement