AI muốn lập trình DLL cho Excel và các loại bằng Delphi thì xem video này nhé!

Liên hệ QC

Nguyễn Duy Tuân

Nghị Hách
Thành viên danh dự
Tham gia
13/6/06
Bài viết
4,649
Được thích
10,138
Giới tính
Nam
Nghề nghiệp
Giáo viên, CEO tại Bluesofts
Lần chỉnh sửa cuối:
là sao T khong hiểu
mình đang có ý tưởng 1 chương trình sài 2 cai là Acess và SQL luôn , muon sai cai nao thì tự chọn hihihiii
ý Mạnh hỏi cài cái Server SQL đó cấu hình máy thấp nhất chi tiết là như thế nào ???!!!... để Mạnh cài vô vừa xài Access và SQL luôn
để khi rảnh nghiên cứu vừa học vừa xài luôn ... sau này thành thạo SQL ròi thì cho cái Access kia đi nghỉ mát cho khỏe vậy thôi
 
Upvote 0
Nhờ các bạn chỉ dùm Mạnh
Trên VBA Mạnh xài code Như sau
Mã:
Dim Sh As Object
    For Each Sh In Worksheets
       If Sh.CodeName <> "Sheet6" Then
       Sheet6.Visible = True
          Sh.Visible = 2
       End If
    Next
Vậy trong Delphi Mình Duyệt For Each sao ... hay code trên Chuyển Qua Delphi viết lại sao
Xin Cảm Ơn
 
Upvote 0
Nhờ các bạn chỉ dùm Mạnh
Trên VBA Mạnh xài code Như sau
Mã:
Dim Sh As Object
    For Each Sh In Worksheets
       If Sh.CodeName <> "Sheet6" Then
       Sheet6.Visible = True
          Sh.Visible = 2
       End If
    Next
Vậy trong Delphi Mình Duyệt For Each sao ... hay code trên Chuyển Qua Delphi viết lại sao
Xin Cảm Ơn

Trong Delphi cho phép dùng For Each nhưng tùy tình huống. Tổng thể bạn dùng cách như sau

Mã:
var Sh:  OleVariant;
      I: Integer;
begin          
    for I:= 1 to Worksheets.Count do
    begin
       sh := Worksheets[I];
       If Sh.CodeName <> 'Sheet6' Then
       begin  
          //Sheet6.Visible := True; ==> Trong Delphi không dùng được đối tượng VBA tự sinh như Sheet6, lệnh này bạn phải làm theo cách khác. 
          Sh.Visible := 2;
       end;
    end;
end;
 
Upvote 0
Em có test thử mà không tài nào lấy được Type String, integer của ar không biết em có sai chỗ nào mong các anh hướng dẫn với ạh
Mã:
ar:array of Variant;
ar:=['GaiPhap', 5, 'Học hỏi',2.5]
for i := VarArrayLowBound(ar, 1) to VarArrayHighBound(ar, 1) do
 
Upvote 0
Em có test thử mà không tài nào lấy được Type String, integer của ar không biết em có sai chỗ nào mong các anh hướng dẫn với ạh
Mã:
ar:array of Variant;
ar:=['GaiPhap', 5, 'Học hỏi',2.5]
for i := VarArrayLowBound(ar, 1) to VarArrayHighBound(ar, 1) do

Giá trị trong mảng không phải kiểu Variant chuẩn của Windows (mặc dù kiểu phần tử là Variant) nên bạn không kiểm tra kiểu giá trị được.
VarArrayLowBound hay những hàn VarArray* chỉ dùng với mảng theo định nghĩa chuẩn của Windows - PSafeArray.

Khi các bạn lấy giá trị từ Excel thông qua RANGE[..].Value thì thuộc tính Value có kiểu giá trị là Variant chuẩn của Windows vì thế các bạn mới có thể kiểm tra thông tin của nó. NHƯNG bạn tự khai báo biến kiểu Variant và dùng để gán giá trị theo cách Delphi thì không được.
 
Upvote 0
Giá trị trong mảng không phải kiểu Variant chuẩn của Windows (mặc dù kiểu phần tử là Variant) nên bạn không kiểm tra kiểu giá trị được.
VarArrayLowBound hay những hàn VarArray* chỉ dùng với mảng theo định nghĩa chuẩn của Windows - PSafeArray.

Khi các bạn lấy giá trị từ Excel thông qua RANGE[..].Value thì thuộc tính Value có kiểu giá trị là Variant chuẩn của Windows vì thế các bạn mới có thể kiểm tra thông tin của nó. NHƯNG bạn tự khai báo biến kiểu Variant và dùng để gán giá trị theo cách Delphi thì không được.
Cái này em đang làm 1 vòng lập duyệt qua Arr để insert hay Update Data vào SQL chứ không phải trong Excel.
Vậy có cách nào mình khai báo kiểu trong mãng không anh, [integer, String, date]
 
Upvote 0
Cái này em đang làm 1 vòng lập duyệt qua Arr để insert hay Update Data vào SQL chứ không phải trong Excel.
Vậy có cách nào mình khai báo kiểu trong mãng không anh, [integer, String, date]

Bạn làm theo cách sau:

Mã:
var
    arr: array of OleVariant;
    I: Integer;
begin
   SetLength(arr, 3);

   arr[0] := 100;
   arr[1] := 'Chuỗi';
   arr[2] := EncodeDate(2018, 11, 20);

   //đọc từng phần tử mảng
   for I := low(arr) to high(arr) do
   begin
        arr[I] ->là phần tử mảng thứ I, bạn có thể kiểm tra kiểu giá trị hay lấy giá trị bình thường.
       //mọi việc làm bình thường....
   end;
end;
 
Upvote 0
Bạn làm theo cách sau:

Mã:
var
    arr: array of OleVariant;
    I: Integer;
begin
   SetLength(arr, 3);

   arr[0] := 100;
   arr[1] := 'Chuỗi';
   arr[2] := EncodeDate(2018, 11, 20);

   //đọc từng phần tử mảng
   for I := low(arr) to high(arr) do
   begin
        arr[I] ->là phần tử mảng thứ I, bạn có thể kiểm tra kiểu giá trị hay lấy giá trị bình thường.
       //mọi việc làm bình thường....
   end;
end;
Da cam on anh, cai date em lay ty datepicke
 
Upvote 0
Bạn làm theo cách sau:

Mã:
var
    arr: array of OleVariant;
    I: Integer;
begin
   SetLength(arr, 3);

   arr[0] := 100;
   arr[1] := 'Chuỗi';
   arr[2] := EncodeDate(2018, 11, 20);

   //đọc từng phần tử mảng
   for I := low(arr) to high(arr) do
   begin
        arr[I] ->là phần tử mảng thứ I, bạn có thể kiểm tra kiểu giá trị hay lấy giá trị bình thường.
       //mọi việc làm bình thường....
   end;
end;
hihih chay ok roài anh, Cám ơn anh nhiều:p:p:p:p
 
Upvote 0
Sao em dùng lệnh inser lên Table SQL nó lại không hiểu unicode Nguy?n Th? Thanh Thu? Fiels cua em là nvarchar(50), hay em định dạng sai.
Mong các anh hướng dẫn giúp em với ạh
 
Upvote 0
Upvote 0
Upvote 0
Ý bạn ấy là thêm chữ N lòng vào câu lệnh SQL, làm cách đó cũng ra anh.
 
Upvote 0
các bạn cho mình hỏi chút
Code mình viết sử dụng chạy tốt trong môi trường Access tuy nhiên có lúc nó lại báo lỗi theo hình là lỗi gì mình ko biết
Mong các bạn chỉ dùm
Capture.PNG
 
Upvote 0
Upvote 0
Web KT
Back
Top Bottom