1

Konu: MS SQL 2005 datetime tipinin date e çevirme

Selamlar;

MS SQL 2005 üzeirnden ve ya VFP 9 dan otomatik olarak datetime tipinin date e nasıl çevirebilirim?

Bilmediğin Neyse Yanıldığındır.

2

Re: MS SQL 2005 datetime tipinin date e çevirme

cursoradapter kullan ve tipini date seç.

Haksızlıklar karşısında susanlar, dilsiz şeytanlardır!
www.metinemre.com

3

Re: MS SQL 2005 datetime tipinin date e çevirme

metin yazdı:

cursoradapter kullan ve tipini date seç.

Ufak bir örnek verebilirmisiniz?

Bilmediğin Neyse Yanıldığındır.

4

Re: MS SQL 2005 datetime tipinin date e çevirme

Visual Fox Pro
Local loCursor, lcConStr

lcConStr = 'Provider=SQLNCLI;Trusted_connection=Yes;Server=.\SQLExpress'
loCursor = Createobject('CaGeneric','ADO',m.lcConStr)
 
With loCursor
  .Alias          = 'myTable'
  .CursorSchema = 'employeeID int, firstName varchar(10), lastName varchar(20),'+;
    ' birthDate date, hireDate date,title varchar(30)'
  TEXT TO .SelectCmd  noshow
SELECT employeeID,firstName,lastName,birthDate,hireDate,title
FROM NorthWind..Employees emp
  ENDTEXT
Endwith
 
If loCursor.CursorFill(.T.,.F.,0,loCursor.oCommand)
  Select (loCursor.Alias)
 
  loCursor.MakeUpdatable('NorthWind..Employees','employeeId')
  Browse Last
  Tableupdate(2,.T.,loCursor.Alias)
Else
  Messagebox(loCursor.GetErrorExplanation())
Endif
 
 
Define Class CaGeneric As CursorAdapter
  CompareMemo = .F.
  FetchAsNeeded = .T.
  FetchSize = 100
  FetchMemo = .T.
  BatchUpdateCount = 100
  WhereType = 1
  AllowSimultaneousFetch = .T.
  MapVarchar = .T.
  MapBinary = .T.
  BufferModeOverride = 5
  *!*      *  Nodata = .T.
  Handle = 0
 
  Procedure AutoOpen
    If Not Pemstatus(This, '__VFPSetup', 5)
      This.AddProperty('__VFPSetup', 1)
      This.Init()
    Endif
  Endproc
 
  Procedure Init(tcType,tcConnectionString)
    Local llReturn
    Do Case
      Case Not Pemstatus(This, '__VFPSetup', 5)
        This.AddProperty('__VFPSetup', 0)
      Case This.__VFPSetup = 1
        This.__VFPSetup = 2
      Case This.__VFPSetup = 2
        This.__VFPSetup = 0
        Return
    Endcase
    Set Multilocks On
    llReturn = DoDefault()
 
    This.DataSourceType = m.tcType
 
    Store This.DataSourceType To ;
      this.InsertCmdDataSourceType, ;
      this.UpdateCmdDataSourceType, ;
      this.DeleteCmdDataSourceType
 
    ***<DataSource>
    Do Case
      Case Upper(This.DataSourceType) == "ODBC"
        This.Handle = Sqlstringconnect(m.tcConnectionString)
 
        Store This.Handle To ;
          This.Datasource,;
          This.InsertCmdDataSource,;
          This.UpdateCmdDataSource,;
          This.DeleteCmdDataSource
 
      Case Upper(This.DataSourceType) == "ADO"
        Local loConnDataSource
        loConnDataSource = Createobject('ADODB.Connection')
        ***<DataSource>
        loConnDataSource.ConnectionString = m.tcConnectionString
        ***</DataSource>
        loConnDataSource.Open()
        This.Datasource = Createobject('ADODB.RecordSet')
        This.Datasource.CursorLocation   = 3  && adUseClient
        This.Datasource.LockType         = 3  && adLockOptimistic
        This.Datasource.ActiveConnection = loConnDataSource
        *** End of Select connection code: DO NOT REMOVE
 
        loCommand = Createobject('ADODB.Command')
        loCommand.ActiveConnection = loConnDataSource
        This.AddProperty('oCommand',loCommand)
        This.UpdateCmdDataSource=loCommand
        This.InsertCmdDataSource=loCommand
        This.DeleteCmdDataSource=loCommand
 
      Case Upper(This.DataSourceType)="NATIVE" && Not implemented
      Case Upper(This.DataSourceType)="XML"  && Not implemented
    Endcase
    ***</DataSource>
 
    If This.__VFPSetup = 1
      This.__VFPSetup = 2
    Endif
    Return llReturn
  Endproc
 
  Procedure MakeUpdatable(tcTableName,tckeyField,tlDoNotIncludeKey)
    This.Tables = m.tcTableName
    This.KeyFieldList = m.tckeyField
    Local ix, lnUpdateableFCount
    lnUpdateableFCount = Fcount(This.Alias)-Iif(This.DataSourceType='ADO',1,0) && last one is ADOBOOKMARK
    For ix = 1 To m.lnUpdateableFCount
      If !m.tlDoNotIncludeKey Or !(Upper(Field(m.ix,This.Alias,0)) == Upper(m.tckeyField))
        This.UpdatableFieldList = This.UpdatableFieldList + ;
          IIF(Empty(This.UpdatableFieldList),'',',') + ;
          FIELD(m.ix,This.Alias,0)
      Endif
      This.UpdateNameList = This.UpdateNameList + ;
        IIF(Empty(This.UpdateNameList),'',',') + ;
        TEXTMERGE('<<FIELD(m.ix,this.Alias,0)>> <<m.tcTableName>>.<<FIELD(m.ix,this.Alias,0)>>')
    Endfor
  Endproc
 
  Procedure QueryFill()
    Local llSuccess
    If This.DataSourceType ="ADO"
      llSuccess = This.CursorFill(.F.,.F.,0,This.oCommand)
    Else
      llSuccess = This.CursorFill(.F.)
    Endif
    If !m.llSuccess
      If This.DataSourceType ="ADO"
        lcMessage = This.oCommand.CommandText + Chr(13) + This.GetErrorExplanation()
      Else
        lcMessage = This.GetErrorExplanation()
      Endif
      Messagebox(m.lcMessage)
    Endif
    Return m.llSuccess
  Endproc
 
  Procedure GetErrorExplanation
    Local lcError,ix
    Local Array aWhy[1]
    Aerror(aWhy)
    lcError = ""
    For ix = 1 To 7
      lcError = m.lcError + Transform(aWhy[m.ix]) + Chr(13)
    Endfor
    Return m.lcError
  Endproc
Enddefine

5

Re: MS SQL 2005 datetime tipinin date e çevirme

takılmadan edemiycem... örnek baya bir ufak olmuş smile

Visual Fox Pro
LOCAL lcAdapter

lcAdapter=CREATEOBJECT("cursoradapter")   
lcAdapter.DataSourceType="ODBC"
lcAdapter.DataSource=ovars.sqlhandle
lcAdapter.KeyFieldList="guid"
lcAdapter.FetchSize=-1
lcAdapter.FetchSize=100
lcAdapter.FetchAsNeeded=.F.
lcAdapter.Alias="stokhar"
lcAdapter.Tables="stokhar"
lcAdapter.WhereType= 1
*------------- cursorschema ---------------------
lcAdapter.CursorSchema="kod char(20),pasifkod char(20),cinsi varchar(40),tarih d"
*------------- selectcmd ------------------------
lcAdapter.SelectCmd="select kod,pasifkod,cinsi,tarih  from stokhar"
*------------- updatenamelist -------------------
lcAdapter.UpdateNameList="kod stokhar.kod,pasifkod stokhar.pasifkod,cinsi stokhar.cinsi,tarih st"
lcAdapter.UpdateNameList=lcAdapter.UpdateNameList+"okhar.tarih"
*------------- updatablefieldlist ---------------
lcAdapter.UpdatableFieldList="kod,pasifkod,cinsi,tarih"
lcAdapter.Cursorfill(.t.)
RETURN lcAdapter
Haksızlıklar karşısında susanlar, dilsiz şeytanlardır!
www.metinemre.com

6

Re: MS SQL 2005 datetime tipinin date e çevirme

Ornek aslinda ufak:) Yaninda ikramiyesi jenerik cursoradapter var.

7

Re: MS SQL 2005 datetime tipinin date e çevirme

o zaten belli de. işin başındaki birisi için ayıklamak zor olabilir...

peki birşey soracam. ado'yu kullanınca cursoradapter'de bir artısı oluyor mu? oluyorsa ne?

Haksızlıklar karşısında susanlar, dilsiz şeytanlardır!
www.metinemre.com

8 Son düzenleyen, ugurlu2001 (17.06.2009 08:29:49)

Re: MS SQL 2005 datetime tipinin date e çevirme

Arka planda neler olduğu yada nasıl olduğu hakkında pek bilgim yok; ama bilenlerin söylediği şu: "ADO.NET" ile yapılan işlemler; OleDB yada ODBC ye göre çok daha performanslı.

Uğur
-------------------------------------------------------------------------------------------------------------
Hayat bir bisiklete binmek gibidir. Pedalı çevirmeye devam ettiğiniz sürece düşmezsiniz. Claude Peppeer
Kusuru söylenmeyen adam, ayıbını hüner sanır.  Türk Atasözü

9

Re: MS SQL 2005 datetime tipinin date e çevirme

Selamlar;
Bu ufak kodu deneyip bilgi vereceğim. Çok teşekkürler.

Bilmediğin Neyse Yanıldığındır.

10

Re: MS SQL 2005 datetime tipinin date e çevirme

ugurlu2001 yazdı:

Arka planda neler olduğu yada nasıl olduğu hakkında pek bilgim yok; ama bilenlerin söylediği şu: "ADO.NET" ile yapılan işlemler; OleDB yada ODBC ye göre çok daha performanslı.

daha yavaş olması gerekir. çünkü ado odbc'nin üzerine bir ek katmanmış...

Haksızlıklar karşısında susanlar, dilsiz şeytanlardır!
www.metinemre.com

11

Re: MS SQL 2005 datetime tipinin date e çevirme

ADO daha yuksek seviyeli bir API. Daha hizli olmak gibi bir iddiasi yok. Sadece ODBC ile halledilemeyen bazi yenilikleri de destekliyor (ornegin multivalue field, hiyerarsik dataset, XML'e kaydetme ve okuma, tablo/kayit gibi yaratma ...). MS ADO'ya ODBC'den fazla onem veriyor ve gelecekte OLEDB (ADO) destegi artarken, ODBC desteginde azalma en azindan benim algiladigim gelisme. Eskiden bazi seylerin OLEDB driverini bulmak daha zordu, simdi OLEDB driver daha fazla, ODBC driver yok. ADO baslibasina bir dil sayilabilir de.
(ADO'nun arkasinda fox takiminin olmasi da cabasi:)

12

Re: MS SQL 2005 datetime tipinin date e çevirme

benim demek istediğim cursoradapter'i ado ile kullanınca bize ne ek faydası oluyor? ado'nun bu bahsettiğin şeylerini  kullanabiliyor muyuz? bir de:

multivalue field
hiyerarşik dataset
tablo/kayıt gibi yaratma

ne demek bunlar?

Haksızlıklar karşısında susanlar, dilsiz şeytanlardır!
www.metinemre.com

13

Re: MS SQL 2005 datetime tipinin date e çevirme

ODBC driveri olmayip OLEDB driveri olanlara da ulasiyorsun.
Multivalue field: Cok degerli alan. Ayni alanda birden fazla deger tutuluyor
Hierarsik dataset: Customer/Orders/OrdItems gibi yapi
Tablo/Kayit adi ustunde, memoryde cursor benzeri ADO tablo.