1

Konu: Okunan bilginin türünü öğrenmek

Üsdatlar exceldeki  herhangi bir hücreden okunan bilginin,sayısalmı,karaktermi,yoksa tarih bilgisi mi olduğunu nasıl anlarım.Buna neden ihtiyaç duyduğuma gelince.Exceldeki A sütünunda bununan bilgi örneğin ( "100")  türü "metin" olmasına ragmen,fox dan okuduğumda sayısal bilgi geliyor.Excelde ne yapıysam bu sorunu gideremedim.Bir noktayı kaçırıyorum sanırım..Hepinize selamlar..:D

En büyük sermaye nakit,nakit sermaye vakittir...

2

Re: Okunan bilginin türünü öğrenmek

type() veya vartype().

Tipi metin yapmak onu hemen metin yapmiyor. Metin yapildiktan sonra dataya dokunulmus olmasi gerekiyor.

Visual Fox Pro
Clear

Local lcTableName,lcConnection,lcSQL, lcXLSName
lcTableLocation = _samples+'data'
lcConnection    = "Provider=VFPOLEDB;Data Source="+ m.lcTableLocation
 
TEXT TO lcSQL TEXTMERGE noshow
SELECT line_no, order_id, product_id, quantity, unit_price
from orditems
ENDTEXT
 
oExcel = Createobject('Excel.Application')
With oExcel
  .WorkBooks.Add
  .Visible = .T.
  With .ActiveWorkBook.ActiveSheet
    VFP2ExcelCopy(m.lcConnection,m.lcSQL,.Range('A1'))
 
    For ix = 1 To .UsedRange.Columns.Count
      v=.Cells(2, m.ix ).Value
      ? m.v, Type('m.v'), Vartype(m.v)
    Endfor
 
    .UsedRange.Columns(5).NumberFormat = '@'
 
    For ix = 1 To .UsedRange.Columns.Count
      v=.Cells(2, m.ix ).Value
      ? m.v, Type('m.v'), Vartype(m.v)
    Endfor
 
    If Type('.UsedRange.Cells(2,5).Value') != 'C'
        .UsedRange.Cells(2,5).Value = TRANSFORM(.UsedRange.Cells(2,5).Value)
    Endif
 
    For ix = 1 To .UsedRange.Columns.Count
      v=.Cells(2, m.ix ).Value
      ? m.v, Type('m.v'), Vartype(m.v)
    Endfor
 
 
  Endwith
Endwith
 
Function VFP2ExcelCopy
  Lparameters tcDataSource, tcSQL, toRange
  Local loConn As AdoDB.Connection, ;
    loRS As AdoDB.Recordset,;
    ix
  loConn = Createobject("Adodb.connection")
  loConn.ConnectionString = m.tcDataSource
  loConn.Open()
  loRS = loConn.Execute(m.tcSQL)
 
  For ix=1 To loRS.Fields.Count
    toRange.Offset(0,m.ix-1).Value = Proper(loRS.Fields(m.ix-1).Name)
    toRange.Offset(0,m.ix-1).Font.Bold = .T.
  Endfor
  toRange.Offset(1,0).CopyFromRecordSet( loRS )
  loRS.Close
  loConn.Close
Endfunc

3

Re: Okunan bilginin türünü öğrenmek

Üstat, ellerine sağlık smile

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ü

4

Re: Okunan bilginin türünü öğrenmek

Çetin hocam,klavyeye dokunan parmakların dert görmesin  big_smile

En büyük sermaye nakit,nakit sermaye vakittir...