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

Liên hệ QC

Người dùng đang xem chủ đề này

Nguyễn Duy Tuân

Nghị Hách
Thành viên danh dự
Tham gia
13/6/06
Bài viết
4,842
Được thích
10,337
Giới tính
Nam
Nghề nghiệp
Giáo viên, CEO tại Bluesofts
Lần chỉnh sửa cuối:
Cái này thì mình hổng biết, mạnh dowload từ đâu có thể người ta biên soạn còn thiếu hoặc........, còn theo mình mình sài cái gì vọ trang đó kiếm là chắc ăn
tại muốn đọc tài liệu để có cái nhìn tổng quát về các hàm trong delphi ... và sử dụng khi cần thiết đó mà ... chắc mấy tay đó làm lâu ròi nên nó thiếu cái hàm đó hihihihihi
 
Upvote 0
ý mạnh hỏi nhiều ấy 1 list toàn bộ hàm mà Delphi có ấy
Như file mạnh úp đó cái Hàm bạn cho sao ko thấy

Không thể liệt kê hết được đâu. Delphi không phải VBA hay VB6. Nó như biển lớn rất nhiều loại cá. Chỉ có thể nhớ một số cái thông dụng, phát sinh nhu cầu khác thì tìm trên trang web của Delphi hoặc các kênh hỗ trợ khác thôi.
 
Upvote 0
Các bạn cho mình hỏi chút
Mình viết 1 hàm thấy chạy tốt ra kết qua như mong đợi nhưng sao nó cứ báo lỗi theo hình như sau là sao ??!!
hay mình phải xài thêm hàm gì nữa chuyển đổi nó vv
ERROR.PNG
 
Upvote 0
Upvote 0
Cai nya la Insert Into hay select.
Híc mạnh đưa có 1 dòng sao mà đoán ra muốn làm gì
cai sArr[x, y] là số hay String
Chi tiết vầy
Mã:
for x := 1 to lRows do begin
                If (sArr[x, ColFilter]) <>'' Then begin
                    Qry := 'INSERT INTO ' + TableName + ' VALUES(' + IntToStr(x);
                    For y := 1 To lcols do begin                       
                        
                        Qry :=  Qry + ',' +  trim(QuotedStr(sArr[x, y]));                       
                    End;
                    Qry := Qry + ')';
                    Db.Execute(Qry);
                end;
            End;
 
Upvote 0
Chi tiết vầy
Mã:
for x := 1 to lRows do begin
                If (sArr[x, ColFilter]) <>'' Then begin
                    Qry := 'INSERT INTO ' + TableName + ' VALUES(' + IntToStr(x);
                    For y := 1 To lcols do begin                      
                       
                        Qry :=  Qry + ',' +  trim(QuotedStr(sArr[x, y]));                      
                    End;
                    Qry := Qry + ')';
                    Db.Execute(Qry);
                end;
            End;



Mã:
var
tam: String
for x := 1 to lRows do begin

                If (sArr[x, ColFilter]) <>'' Then begin

                    Qry := 'INSERT INTO ' + TableName + ' VALUES(' + IntToStr(x);

                    For y := 1 To lcols do begin                     
if VarIsEmpty(sArr[x, y]) or VarIsNull(sArr[x, y]) then
Tam:=''
else
Tam:=sArr[x, y];
                      

                        Qry :=  Qry + ',' +  trim(QuotedStr(Tam));                     

                    End;

                    Qry := Qry + ')';

                    Db.Execute(Qry);

                end;

            End;
manh thu kiem tra xem no co null không
không biết có dung hông
 
Upvote 0
Mã:
var
tam: String
for x := 1 to lRows do begin

                If (sArr[x, ColFilter]) <>'' Then begin

                    Qry := 'INSERT INTO ' + TableName + ' VALUES(' + IntToStr(x);

                    For y := 1 To lcols do begin                   
if VarIsEmpty(sArr[x, y]) or VarIsNull(sArr[x, y]) then
Tam:=''
else
Tam:=sArr[x, y];
                    

                        Qry :=  Qry + ',' +  trim(QuotedStr(Tam));                   

                    End;

                    Qry := Qry + ')';

                    Db.Execute(Qry);

                end;

            End;
manh thu kiem tra xem no co null không
không biết có dung hông
OK bạn chuẩn ko cần chỉnh hehehehe
Mà nó chỉ lỗi với vài kiểu dữ liệu à
 
Upvote 0
Nhìn thấy mạnh viết cái này là thấy cũng dữ lắm rồi hihihihihihi
nếu lưu 1 mảng từ Excel qua Access thì OK ( Chạy trên Excel)
mà nếu xài ADO lấy lên mảng xong lưu vào Acess thì lỗi đó (cái này chạy trong Access đó)

Có nghĩa cái hàm API đó chuẩn chạy trong môi trường Excel hay Access điều OK
 
Upvote 0
Nhìn thấy mạnh viết cái này là thấy cũng dữ lắm rồi hihihihihihi
Lại phát sinh lỗi rồi
Khi mình thay đổi tham số Cột truyền vào
ColFilter = 1,2,3,.... Thì nó báo lỗi theo Hình ... lại xài hàm gì chuyển nó từ longint sang UnicodeString Bạn nhỉ
excel.PNG
 
Upvote 0
Lại phát sinh lỗi rồi
Khi mình thay đổi tham số Cột truyền vào
ColFilter = 1,2,3,.... Thì nó báo lỗi theo Hình ... lại xài hàm gì chuyển nó từ longint sang UnicodeString Bạn nhỉ
View attachment 207205
Mạnh coi lại mấy bài trước có bài nói về cái này rồi mà

Mạnh phải viết 1 hàm cho nó kiểm tra sArr[x, y]) sau đó đưa về dạng String rồi mới insert

case TVarData(sArr[x, y]).VType of
varDouble:
tmp:=inttostr(sArr[x, y]));
 
Upvote 0
Mạnh coi lại mấy bài trước có bài nói về cái này rồi mà

Mạnh phải viết 1 hàm cho nó kiểm tra sArr[x, y]) sau đó đưa về dạng String rồi mới insert

case TVarData(sArr[x, y]).VType of
varDouble:
tmp:=inttostr(sArr[x, y]));
đến khúc khó ròi đây ... đêm nay suy nghĩ mai tính tiếp
Bạn có cách nào ngắn gọn chỉ giúp Mình ... xong mai mình tính tiếp
Nó chỉ lỗi khi cột có cả số và chữ VD: KM17210039955
Còn nếu chữ hết hay số hết lại OK mà cái tham số Cols đó là lấy số Cột sao nó lại lỗi vậy
 
Lần chỉnh sửa cuối:
Upvote 0
đến khúc khó ròi đây ... đêm nay suy nghĩ mai tính tiếp
Bạn có cách nào ngắn gọn chỉ giúp Mình ... xong mai mình tính tiếp
Nó chỉ lỗi khi cột có cả số và chữ VD: KM17210039955
Còn nếu chữ hết hay số hết lại OK mà cái tham số Cols đó là lấy số Cột sao nó lại lỗi vậy
KM17210039955 Cái này là String mà dựa vào Fiest integer là lỗi liền ah
varOleStr, varString:
Result := Value;

Mạnh có ý tượng tạo mã ID nào hay không cho mình chút xíu với
 
Upvote 0
KM17210039955 Cái này là String mà dựa vào Fiest integer là lỗi liền ah
varOleStr, varString:
Result := Value;

Mạnh có ý tượng tạo mã ID nào hay không cho mình chút xíu với
cái Cols đó là cột truyền tham số vào mà ko liên quan tới Qry
 
Upvote 0
Các bạn cho Mình hỏi chút
Mình viết 1 Hàm Sau nhưng khi truyền tham số là số cột vào hàm mà cột đó kiểu dữ liệu là số và chữ là nó báo lỗi
Could not convert variant of type (UnicodeString) into type (Double)
Mình có chụp hình khoanh các cột màu đỏ đó là nó lỗi kèm theo tham số cột khi truyền vào Hàm
Mã:
procedure TestArray(sArr: OleVariant; ColFilter: Longint); stdcall;
var
   x,y,k          : longint;
   lRows,lCols    : longint;
begin
  try
  lRows := VarArrayHighBound(sArr, 1);
  lCols := VarArrayHighBound(sArr, 2);
    if ColFilter <= lCols then  begin
      for x := 1 to lRows do begin
        //If (sArr[x, ColFilter]) <>'' Then begin //Tùy chọn lọc theo Cột
          ShowMessage ('Số Cột' + IntToStr(ColFilter));
          For y := 1 To lcols do begin
              If (sArr[x, ColFilter]) <>'' Then begin

              end;
          end;
        //end;
      End;
    end;
  except
    on e: exception do
    showmessage(e.message);
  end;
end;
Khai báo sử dụng
Mã:
Public Sub Main_TestArray()
    Dim Arr As Variant, MaxRow As Long
    MaxRow = Sheet1.UsedRange.Rows.Count
    Arr = Sheet1.Range("B7:L" & MaxRow + 5).Value
    Call TestArray(Arr, 2) ''Sẻ lỗi khi thay tham số 2 là 3,4 và 6 là lỗi code còn lại thì ok
End Sub
vậy Mình muốn hỏi có cách nào khắc phục lỗi trên ... Hình lỗi kèm theo và kiểu dữ liệu
excel.PNGKieu du Lieu.PNG
Rất mong các Bạn chỉ dùm
Xin cảm ơn
 
Upvote 0
Các bạn cho Mình hỏi chút
Mình viết 1 Hàm Sau nhưng khi truyền tham số là số cột vào hàm mà cột đó kiểu dữ liệu là số và chữ là nó báo lỗi
Could not convert variant of type (UnicodeString) into type (Double)
Mình có chụp hình khoanh các cột màu đỏ đó là nó lỗi kèm theo tham số cột khi truyền vào Hàm
Mã:
procedure TestArray(sArr: OleVariant; ColFilter: Longint); stdcall;
var
   x,y,k          : longint;
   lRows,lCols    : longint;
begin
  try
  lRows := VarArrayHighBound(sArr, 1);
  lCols := VarArrayHighBound(sArr, 2);
    if ColFilter <= lCols then  begin
      for x := 1 to lRows do begin
        //If (sArr[x, ColFilter]) <>'' Then begin //Tùy chọn lọc theo Cột
          ShowMessage ('Số Cột' + IntToStr(ColFilter));
          For y := 1 To lcols do begin
              If (sArr[x, ColFilter]) <>'' Then begin

              end;
          end;
        //end;
      End;
    end;
  except
    on e: exception do
    showmessage(e.message);
  end;
end;
Khai báo sử dụng
Mã:
Public Sub Main_TestArray()
    Dim Arr As Variant, MaxRow As Long
    MaxRow = Sheet1.UsedRange.Rows.Count
    Arr = Sheet1.Range("B7:L" & MaxRow + 5).Value
    Call TestArray(Arr, 2) ''Sẻ lỗi khi thay tham số 2 là 3,4 và 6 là lỗi code còn lại thì ok
End Sub
vậy Mình muốn hỏi có cách nào khắc phục lỗi trên ... Hình lỗi kèm theo và kiểu dữ liệu
View attachment 207218View attachment 207219
Rất mong các Bạn chỉ dùm
Xin cảm ơn
Mạnh up Cái File excel mẫu của mạnh lên đây xóa bớt dữ liệu đi, để mình kiểm tra cột 2 là kiểu dữ liệu gì, 3,4 là Double rồi, 6 là date, còn cột 2 nhìn không biết nó là kiểu gì
 
Upvote 0

File đính kèm

Upvote 0
Code mạnh không sai chỉ tại mạnh chưa chuyển dữ liệu quaa tring thôi
Mã:
          showmessage('Số Cột' + VarianToString(ColFilter));
          For y := 1 To lcols do begin
              If VarianToString(sArr[x, ColFilter]) <>'' Then begin

              end;
          end;
asdsad.jpg222.jpg
 
Lần chỉnh sửa cuối:
Upvote 0
Upvote 0
Các bạn chỉ dùm Mạnh cách xài Hàm Sau:
Mã:
procedure TestBien(const Bien: Boolean)
Var
....
Begin
    if Bien then begin
            ShowMessage('ok');
    end;
End;
Vậy khi sử dụng như thế nào mà If Bien đó nó nổi lên OK
Hiện if Bien trên là sai ... Lỗi code ... vậy viết lại sao cho đúng ??!!
Xin Cảm ơn
 
Lần chỉnh sửa cuối:
Upvote 0
Các bạn chỉ dùm Mạnh cách xài Hàm Sau:
Mã:
procedure TestBien(const Bien: Boolean)
Var
....
Begin
    if Bien then begin
            ShowMessage('ok');
    end;
End;
Vậy khi sử dụng như thế nào mà If Bien đó nó nổi lên OK
Hiện if Bien trên là sai ... Lỗi code ... vậy viết lại sao cho đúng ??!!
Xin Cảm ơn
Làm phiền @Nguyễn Duy Tuân
chỉ cho Mạnh cách truyền tham số Boolean từ Excel vào Hàm với ... loay hoay chưa làm được

1/ Có nghĩa là mình truyền tham số từ Excel và là True thì cái Sub kia nó Chạy Msgbox OK

2/ Nếu Mình truyền Vào Là False thì nó IM RE vậy thôi

xin cảm ơn
 
Upvote 0
Làm phiền @Nguyễn Duy Tuân
chỉ cho Mạnh cách truyền tham số Boolean từ Excel vào Hàm với ... loay hoay chưa làm được

1/ Có nghĩa là mình truyền tham số từ Excel và là True thì cái Sub kia nó Chạy Msgbox OK

2/ Nếu Mình truyền Vào Là False thì nó IM RE vậy thôi

xin cảm ơn

Trong Delphi, khi viết DLL với hàm API thì kiểu dữ liệu thay Boolean thành WordBool nhé.
 
Upvote 0
Upvote 0
Cảm Ơn
IF Bien THEN
BEGIN
// chỉ chạy khi Bien = True
END:

Bạn chưa có code chạy khi Bien=False thì sao mà nó chạy?
OK ... xong Rồi Cảm ơn Bạn ... có vậy loay hoay hôm qua tới Nay có bạn chỉ mới xong
Mã:
if Bien then ShowMessage('OK');
Mong Kẹt tới đâu các Bạn chỉ cho Mạnh vậy là Ok rồi còn lại code két nay viết khá hơn chút nữa :D
Bài đã được tự động gộp:

Các Bạn cho mình hỏi chút ... thấy Tây nó keo là xài hàm sau nó Ánh xạ tới System tốc độ sẻ nhanh hơn xài IntToStr ... một chút ...
không biết nó nói vậy đúng không
Mã:
function ConvertIntToStr(Value: integer): string;
begin
  System.Str(Value, result);
end;
 
Lần chỉnh sửa cuối:
Upvote 0
Hic sao em không kết nối SQl duoc nhỉ
hichichic biết lỗi rồi do cái Unikey
 
Lần chỉnh sửa cuối:
Upvote 0
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
Các anh cho em hỏi xíu nhé, mình sử dụng SQL mo Por kết nối qua mạng có ảnh hưởng gì không ta hichic, tự nhiên bình thường không sao Test cái SQL hôm sau nhà mạng xuống nói sửa gì em không biết nữa :confused::confused::confused::confused:, mà hình như kiểm tra thì phải :rolleyes::rolleyes::rolleyes::rolleyes::rolleyes::rolleyes: (hay là trùng hợp ta)
 
Upvote 0
Các anh cho em hỏi xíu nhé, mình sử dụng SQL mo Por kết nối qua mạng có ảnh hưởng gì không ta hichic, tự nhiên bình thường không sao Test cái SQL hôm sau nhà mạng xuống nói sửa gì em không biết nữa :confused::confused::confused::confused:, mà hình như kiểm tra thì phải :rolleyes::rolleyes::rolleyes::rolleyes::rolleyes::rolleyes: (hay là trùng hợp ta)
Chắc là trùng hợp thôi bạn ạ. Port 1433 phải mở để chạy SQL Serve.
 
Upvote 0
Các anh cho em hỏi xíu nhé, mình sử dụng SQL mo Por kết nối qua mạng có ảnh hưởng gì không ta hichic, tự nhiên bình thường không sao Test cái SQL hôm sau nhà mạng xuống nói sửa gì em không biết nữa :confused::confused::confused::confused:, mà hình như kiểm tra thì phải :rolleyes::rolleyes::rolleyes::rolleyes::rolleyes::rolleyes: (hay là trùng hợp ta)
yếu vía thấy cái bóng nghĩ con ma nên giật mình thui mà :p:p:p:p
 
Upvote 0
;);););););););) không phải yếu vía tự Mạng mình có biết gì đâu...... với lại thấy NV bưu điện vào xẹt xẹt 5 phút xong.;););););););););)
 
Upvote 0
To @giaiphap
Hôm qua kẹt quá nay mới rảnh chút úp cho he

Mô tả sở qua như sau:
1/ Mạnh xài Windows10_x64 + Office2016_x32

2/ Mạnh có Build Thành 2 bản một bản cho Officex32 và 1 bản cho Officex64

3/ Trên máy mạnh thì nó chạy được file *.dll trong Folder Win32 còn File trong Folder Win64 là lỗi code ... Vì vậy khẳng định Officex32 thì chỉ chạy *.dll Win32

4/ Phiền Bạn nào có xài Officex64 tải về chạy thử File trong Folder Win64 xem nó có chạy tốt ko nhé

5/ Trong File Excel có ghi chi tiết trong đó Mình làm Load File *.dll trong Folder Build nó cho tiện khi build xong mở file Excel lên test code luôn khỏi mất công copy file vào C:\Windows\System32\ *.dll ... Nếu sau này làm thành thư viên rồi thì copy vô đó xóa hết code cho gọn

6/ Có 1 hàm Linktinh đó mục đích là mình thử xem cái *.dll kia nó có chạy hay ko chứ hàm đó ko có giá trị chi cả he :p:D

7/ File VBLibrary.dpr là code đó he ... Chuột Phải\Edit nó mà coi

8/ Tài liệu mạnh có đầy yêu khúc nào mai mốt rảnh coi lại xem cái nào thuận tiện nhất cho người mới nhập môn mạnh úp cho

Cứ từ từ thong thả ta chinh phục nó ... có nhiều tay giáo sư làm 10 mấy năm chưa ra 1 cái đề TÀI khoa học mà mình mới bắt đầu lo chi

9/ Làm phiền @befaint có Officex64 chạy test dùm code trong Folder Win64 và ngược lại xem sao

Học mà chơi ... chơi mà học .... vui vẻ khí thế là tốt
Anh Mạnh !
Anh cho em hỏi chút, Em Download File của Anh về giải nén thì chạy ngon, nhưng khi Em Build lại dự án của Anh và dùng VBLibrary (64bit) vừa mới build thì báo lỗi. Không biết có phải phần mềm của Em Version thấp hơn hay thế nào không biết nữa, Anh kiểm tra giúp Em với. Em đang dùng Win10 và Office 64bit.

Thanks !
 

File đính kèm

  • Loi2.gif
    Loi2.gif
    31.7 KB · Đọc: 9
  • Soft.gif
    Soft.gif
    19.8 KB · Đọc: 9
Lần chỉnh sửa cuối:
Upvote 0
Anh Mạnh !
Anh cho em hỏi chút, Em Download File của Anh về giải nén thì chạy ngon, nhưng khi Em Build lại dự án của Anh và dùng VBLibrary (64bit) vừa mới build thì báo lỗi. Không biết có phải phần mềm của Em Version thấp hơn hay thế nào không biết nữa, Anh kiểm tra giúp Em với. Em đang dùng Win10 và Office 64bit.

Cảm ơn !
thấy bạn cài bản XE2 là build 64bit ok đó ... mình suy đoán là bạn làm sai cái chi đó thôi
Kiển tra lại từng cung đoạn xem sao !!!
Thử lại dòng sau xem sao
Mã:
DataRange = "Data_Nhap"
 
Lần chỉnh sửa cuối:
Upvote 0
Nhờ các Bạn chỉ dùm Mình
trên VB6 khi mình tạo File DLL mình có lưu các thông tin vào đó khi ta dê chuột vào file DLL thì nó nổi lên cái thông tin ta lưu đó lên

Còn trên Delphi mình làm hoài không được ... có tìm trên Google mà nó hướng dẫn kiểu chi vậy làm cũng ko được
vậy Úp bài nhờ các Bạn chỉ dùm cách làm trên Delphi ...
Xin cảm ơn
Hình ảnh mình làm trên VB6 như sau ... sau khi make sang DLL rồi thì dê chuột vào File DLL nó nổi lên thông tin
vb6.PNG
 
Upvote 0
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;
Chào Anh Tuân !
Để học Delphi và áp dụng vào Excel mình, nhờ Anh chuyển giúp em code VBA sang DLL file sau với. Code ở Delphi và các khai báo ở file Excel như thế nào để em có cái nhìn rỏ ràng hơn.

Cảm ơn Anh !
 

File đính kèm

Upvote 0
Nhờ các Bạn chỉ dùm Mình
trên VB6 khi mình tạo File DLL mình có lưu các thông tin vào đó khi ta dê chuột vào file DLL thì nó nổi lên cái thông tin ta lưu đó lên

Còn trên Delphi mình làm hoài không được ... có tìm trên Google mà nó hướng dẫn kiểu chi vậy làm cũng ko được
vậy Úp bài nhờ các Bạn chỉ dùm cách làm trên Delphi ...
Xin cảm ơn
Hình ảnh mình làm trên VB6 như sau ... sau khi make sang DLL rồi thì dê chuột vào File DLL nó nổi lên thông tin
View attachment 207618

Trong chuỗi bài dạy của tôi về Lập trình Delphi cơ bản có nói tới việc thiết lập thông tin Project/DLL
https://www.giaiphapexcel.com/diend...-trình-delphi-cơ-bản-từ-bluesofts-net.138736/
Bài đã được tự động gộp:

Chào Anh Tuân !
Để học Delphi và áp dụng vào Excel mình, nhờ Anh chuyển giúp em code VBA sang DLL file sau với. Code ở Delphi và các khai báo ở file Excel như thế nào để em có cái nhìn rỏ ràng hơn.

Cảm ơn Anh !

Học Delphi bạn làm đc nhiều việc cao cấp lắm, những gì làm đc trong VBA chỉ làm phần rất nhỏ. Bạn muốn học thì nên theo từng bài dạy cơ bản này đã rồi sau này tự tìm hiểu thêm. Bạn xem series video tôi hướng dẫn Lập trình Delphi cơ bản tại đây.
https://www.giaiphapexcel.com/diend...-trình-delphi-cơ-bản-từ-bluesofts-net.138736/
Bài đã được tự động gộp:

Chào Anh Tuân !
Để học Delphi và áp dụng vào Excel mình, nhờ Anh chuyển giúp em code VBA sang DLL file sau với. Code ở Delphi và các khai báo ở file Excel như thế nào để em có cái nhìn rỏ ràng hơn.

Cảm ơn Anh !

Về cách tạo DLL tôi đã có video cơ bản ở trên, muốn làm nhiều tình huống bạn hãy bắt đầu từ học ngôn ngữ, ít nhất theo các bài tôi hướng dẫn cơ bản trước sẽ có kiến thức để tự học. Code VBA của bạn tôi đã chuyển thành Delphi

Code VBA:
Mã:
Public Function Test()
Dim ws As Worksheet
Dim sSheetName As String
Dim Last As Long
Dim Lastvalue As String

For Each ws In Worksheets
If ws.Name <> "Sheet1" And ws.Name <> "Sheet2" Then
sSheetName = ws.Name
Last = ws.[B65536].End(xlUp).Row
Lastvalue = ws.Range("B" & Last).Value
MsgBox (sSheetName)
MsgBox (Last)
MsgBox (Lastvalue)
End If
Next ws
End Function

Code Delphi

Mã:
function Test(): OleVariant;
var
  App, ws: OleVariant;
  sSheetName,Lastvalue: String;
  Last: Longint;
  I: Integer;
begin
  //App phai dc truyen vao tu Excel
  for I := 1 to App.Worksheets.Count do
  begin
    ws := App.Worksheets[I];
    if (ws.Name <> 'Sheet1') and (ws.Name <> 'Sheet2') then
    begin
      sSheetName := ws.Name;
      Last := ws.Range['B65536'].End[xlUp].Row;
      Lastvalue := ws.Range['B' + IntToStr(Last)].Value;
      ShowMessage(sSheetName);
      ShowMessage(IntToStr(Last));
      ShowMessage(Lastvalue);
    end;
  end;

end;
 
Lần chỉnh sửa cuối:
Upvote 0
Trong chuỗi bài dạy của tôi về Lập trình Delphi cơ bản có nói tới việc thiết lập thông tin Project/DLL
https://www.giaiphapexcel.com/diendan/threads/hướng-dẫn-lập-trình-delphi-cơ-bản-từ-bluesofts-net.138736/
Bài đã được tự động gộp:



Học Delphi bạn làm đc nhiều việc cao cấp lắm, những gì làm đc trong VBA chỉ làm phần rất nhỏ. Bạn muốn học thì nên theo từng bài dạy cơ bản này đã rồi sau này tự tìm hiểu thêm. Bạn xem series video tôi hướng dẫn Lập trình Delphi cơ bản tại đây.
https://www.giaiphapexcel.com/diend...-trình-delphi-cơ-bản-từ-bluesofts-net.138736/
Bài đã được tự động gộp:



Về cách tạo DLL tôi đã có video cơ bản ở trên, muốn làm nhiều tình huống bạn hãy bắt đầu từ học ngôn ngữ, ít nhất theo các bài tôi hướng dẫn cơ bản trước sẽ có kiến thức để tự học. Code VBA của bạn tôi đã chuyển thành Delphi

Code VBA:
Mã:
Public Function Test()
Dim ws As Worksheet
Dim sSheetName As String
Dim Last As Long
Dim Lastvalue As String

For Each ws In Worksheets
If ws.Name <> "Sheet1" And ws.Name <> "Sheet2" Then
sSheetName = ws.Name
Last = ws.[B65536].End(xlUp).Row
Lastvalue = ws.Range("B" & Last).Value
MsgBox (sSheetName)
MsgBox (Last)
MsgBox (Lastvalue)
End If
Next ws
End Function

Code Delphi

Mã:
function Test(): OleVariant;
var
  App, ws: OleVariant;
  sSheetName,Lastvalue: String;
  Last: Longint;
  I: Integer;
begin
  //App phai dc truyen vao tu Excel
  for I := 1 to App.Worksheets.Count do
  begin
    ws := App.Worksheets[I];
    if (ws.Name <> 'Sheet1') and (ws.Name <> 'Sheet2') then
    begin
      sSheetName := ws.Name;
      Last := ws.Range['B65536'].End[xlUp].Row;
      Lastvalue := ws.Range['B' + IntToStr(Last)].Value;
      ShowMessage(sSheetName);
      ShowMessage(IntToStr(Last));
      ShowMessage(Lastvalue);
    end;
  end;

end;
Vì không phải dân chuyên nên mới vậy mong Anh thông cảm. Em sẽ cố gắng học căn bản, được đến đâu hay đến đó.

Cảm ơn Anh !
 
Lần chỉnh sửa cuối:
Upvote 0
Trong chuỗi bài dạy của tôi về Lập trình Delphi cơ bản có nói tới việc thiết lập thông tin Project/DLL
https://www.giaiphapexcel.com/diendan/threads/hướng-dẫn-lập-trình-delphi-cơ-bản-từ-bluesofts-net.138736/
Cho mình hỏi chút sao File DLL do mình viết bằng Delphi đó từ Excel không check Tools/References/*.DLL được vậy hay phải thực hiện thêm việc gì nữa
 
Upvote 0
Cho mình hỏi chút sao File DLL do mình viết bằng Delphi đó từ Excel không check Tools/References/*.DLL được vậy hay phải thực hiện thêm việc gì nữa

DLL bạn làm theo Video của tôi là loại Standard DLL - chuẩn API đấy nên không phải đăng ký. VB6 tạo DLL là loại Active DLL nên mới phải đăng ký.
 
Upvote 0
DLL bạn làm theo Video của tôi là loại Standard DLL - chuẩn API đấy nên không phải đăng ký. VB6 tạo DLL là loại Active DLL nên mới phải đăng ký.
đúng là vậy nhưng sao từ Excel mình check Tools/References/*.DLL đến file đó nó báo lỗi
Còn File Atools mình lại check bình thường vậy nên mới thắc mắc chút ?!
 
Upvote 0
Nguyễn Duy Tuân
Anh cho em hỏi cái này chúc xíu, sao cái Form child của em khi mở lên thay dổi dữ liệu sao các Control nó cứ Đơ Đơ, phải Refresh hay Update no mới hiện dự liệu ????
 
Upvote 0
đúng là vậy nhưng sao từ Excel mình check Tools/References/*.DLL đến file đó nó báo lỗi
Còn File Atools mình lại check bình thường vậy nên mới thắc mắc chút ?!

DLL của A-Tools mình viết đồng thời hai dạng: Hàm API và ActiveX để xây dựng các Class đối tượng vì thế nó có bộ hàm để tiếp nhận Regsvr32 và Reference.... Các bạn chỉ gọi hàm thì không cần phải Regsvr (vụ này khá phiền phwucs khi mang DLL sang một máy tính mà quyền user của Windows không phải là Admin.
Bài đã được tự động gộp:

Nguyễn Duy Tuân
Anh cho em hỏi cái này chúc xíu, sao cái Form child của em khi mở lên thay dổi dữ liệu sao các Control nó cứ Đơ Đơ, phải Refresh hay Update no mới hiện dự liệu ????

Bạn đưa ví dụ cụ thể, có video hoặc code ngắn mình nhìn mới biết đc.
 
Upvote 0
DLL của A-Tools mình viết đồng thời hai dạng: Hàm API và ActiveX để xây dựng các Class đối tượng vì thế nó có bộ hàm để tiếp nhận Regsvr32 và Reference.... Các bạn chỉ gọi hàm thì không cần phải Regsvr (vụ này khá phiền phwucs khi mang DLL sang một máy tính mà quyền user của Windows không phải là Admin.
Bài đã được tự động gộp:



Bạn đưa ví dụ cụ thể, có video hoặc code ngắn mình nhìn mới biết đc.
Em tạo 1 cái sArrBG và lấy Data từ TADOQuery và em đưa dữ liệu vào List bằng sArrBG Variant
Mã:
  edt_TS.Text := sArrBG[1, Index];
  edt_DVT.Text := sArrBG[3, Index];
LoiRefes.jpg
Khi em nhấn vào List 1 thì List 2 và list 3 sẽ kết nối với SQL để lấy dữ liệu. Sau đó khi nhấn vào List 2 dữ liệu sẽ đưa lên Text box 1-8.
Khi đưa lên Textbox no không lỗi gì hết nó vẫn nhận dữ liệu em đưa vào tuy nhiênn phải thêm edt_DVT.Refresh; từng cái Textbox thì nó mới hiện cái dữ liệu em đưa lên.
 
Upvote 0
Em tạo 1 cái sArrBG và lấy Data từ TADOQuery và em đưa dữ liệu vào List bằng sArrBG Variant
Mã:
  edt_TS.Text := sArrBG[1, Index];
  edt_DVT.Text := sArrBG[3, Index];
View attachment 207820
Khi em nhấn vào List 1 thì List 2 và list 3 sẽ kết nối với SQL để lấy dữ liệu. Sau đó khi nhấn vào List 2 dữ liệu sẽ đưa lên Text box 1-8.
Khi đưa lên Textbox no không lỗi gì hết nó vẫn nhận dữ liệu em đưa vào tuy nhiênn phải thêm edt_DVT.Refresh; từng cái Textbox thì nó mới hiện cái dữ liệu em đưa lên.

Textbox của bạn kiểu/tên component là gì?
 
Upvote 0
Code Delphi

Mã:
function Test(): OleVariant;
var
  App, ws: OleVariant;
  sSheetName,Lastvalue: String;
  Last: Longint;
  I: Integer;
begin
  //App phai dc truyen vao tu Excel
  for I := 1 to App.Worksheets.Count do
  begin
    ws := App.Worksheets[I];
    if (ws.Name <> 'Sheet1') and (ws.Name <> 'Sheet2') then
    begin
      sSheetName := ws.Name;
      Last := ws.Range['B65536'].End[xlUp].Row;
      Lastvalue := ws.Range['B' + IntToStr(Last)].Value;
      ShowMessage(sSheetName);
      ShowMessage(IntToStr(Last));
      ShowMessage(Lastvalue);
    end;
  end;

end;
[/QUOTE]

Anh Tuân cho Em hỏi tí !
- Câu lệnh Last := ws.Range['B65536'].End[xlUp].Row; này khi Debug bị báo lỗi chắc là do Last: Longint nên Delphi không hiểu, Em sữa mà chưa được (Em tạm thời bỏ qua để build thử).
- Sau khi Build DLL em khai báo trong VBA:
Declare PtrSafe Function Test Lib "GetSheet.dll" () As Variant
Sub Main_ShName()
Call Test
End Sub
Nhưng khi chạy thì báo lỗi. Em nghỉ do bị lõi truyền App
//App phai dc truyen vao tu Excel
for I := 1 to App.Worksheets.Count do
...
Nhở Anh xem lại giúp Em với.
Cảm ơn Anh !
 
Upvote 0
Code Delphi

Mã:
function Test(): OleVariant;
var
  App, ws: OleVariant;
  sSheetName,Lastvalue: String;
  Last: Longint;
  I: Integer;
begin
  //App phai dc truyen vao tu Excel
  for I := 1 to OleVariant(App).Worksheets.Count do
  begin
    ws := App.Worksheets[I];
    if (ws.Name <> 'Sheet1') and (ws.Name <> 'Sheet2') then
    begin
      sSheetName := ws.Name;
      Last := ws.Range['B65536'].End[xlUp].Row;
      Lastvalue := ws.Range['B' + IntToStr(Last)].Value;
      ShowMessage(sSheetName);
      ShowMessage(IntToStr(Last));
      ShowMessage(Lastvalue);
    end;
  end;

end;

Anh Tuân cho Em hỏi tí !
- Câu lệnh Last := ws.Range['B65536'].End[xlUp].Row; này khi Debug bị báo lỗi chắc là do Last: Longint nên Delphi không hiểu, Em sữa mà chưa được (Em tạm thời bỏ qua để build thử).
- Sau khi Build DLL em khai báo trong VBA:
Declare PtrSafe Function Test Lib "GetSheet.dll" () As Variant
Sub Main_ShName()
Call Test
End Sub
Nhưng khi chạy thì báo lỗi. Em nghỉ do bị lõi truyền App
//App phai dc truyen vao tu Excel
for I := 1 to App.Worksheets.Count do
...
Nhở Anh xem lại giúp Em với.
Cảm ơn Anh ![/QUOTE]

Bạn phải sửa code hàm trong Delphi để nó đón nhập Application từ VBA (bên ngoài) là
Mã:
function Test(App: IDispatch): OleVariant; stdcall;
var
  App, ws: OleVariant;
  sSheetName,Lastvalue: String;
  Last: Longint;
  I: Integer;
begin
  //App phai dc truyen vao tu Excel
  for I := 1 to OleVariant(App).Worksheets.Count do
  begin
    ws := App.Worksheets[I];
    if (ws.Name <> 'Sheet1') and (ws.Name <> 'Sheet2') then
    begin
      sSheetName := ws.Name;
      Last := ws.Range['B65536'].End[xlUp].Row;
      Lastvalue := ws.Range['B' + IntToStr(Last)].Value;
      ShowMessage(sSheetName);
      ShowMessage(IntToStr(Last));
      ShowMessage(Lastvalue);
    end;
  end;

end;

Trong VBA khai báo hàm là
'Nếu Office 64 bit
Declare PtrSafe Function Test Lib "GetSheet.dll" (App As Application) As Variant


'Nếu Office 32 bit
Declare Function Test Lib "GetSheet.dll" (App As Application) As Variant
Bài đã được tự động gộp:

Cái Tedit chuan cua delphi anh

Vậy phải xem code bạn viết trong sự kiện nào của List2 và bạn gán dữ liệu thế nào? Mình làm Delphi 11 năm nay chưa gặp vấn đề này bao giờ :D
 
Upvote 0
Anh Tuân cho Em hỏi tí !

Vậy phải xem code bạn viết trong sự kiện nào của List2 và bạn gán dữ liệu thế nào? Mình làm Delphi 11 năm nay chưa gặp vấn đề này bao giờ :D

Hihi em lấy sự kiện Doupble Click;

Code thì nó nguyên cả chùm Code này nó liên quan đến Code khác hichic
Hỏi chay thì anh cũng khó hình dung
Mã:
procedure BangGiaDblClick(Sender: TObject);
begin
try
VST_BangGia.Refresh;
  edt_TS.Text := sArrBG[1, NodeRowBG.Index];
  edt_DVT.Text := sArrBG[3, NodeRowBG.Index];
  edt_DonGia.Text := ADOToString(sArrBG[4, NodeRowBG.Index]);
  edt_SoLuong.SetFocus;
  RefreshControl;
except on E: Exception do
end;
end;
 
Upvote 0
Hihi em lấy sự kiện Doupble Click;

Code thì nó nguyên cả chùm Code này nó liên quan đến Code khác hichic
Hỏi chay thì anh cũng khó hình dung
Mã:
procedure BangGiaDblClick(Sender: TObject);
begin
try
VST_BangGia.Refresh;
  edt_TS.Text := sArrBG[1, NodeRowBG.Index];
  edt_DVT.Text := sArrBG[3, NodeRowBG.Index];
  edt_DonGia.Text := ADOToString(sArrBG[4, NodeRowBG.Index]);
  edt_SoLuong.SetFocus;
  RefreshControl;
except on E: Exception do
end;
end;

Vẫn không hiểu gì luôn :). "VST_BangGia" là loại control gì vậy bạn?
 
Upvote 0
Hiện tại mình chỉ có chút time hỗ trợ các bạn trên các component chuẩn và học ngôn ngữ Delphi nên các thành phần "lạ" mình không tham gia vì sẽ phải thêm time nghiên cứu :) . Mình nghĩ vấn đề này bạn debug và tự giải quyết đc thôi.
 
Upvote 0
Anh Tuân cho Em hỏi tí !
- Câu lệnh Last := ws.Range['B65536'].End[xlUp].Row; này khi Debug bị báo lỗi chắc là do Last: Longint nên Delphi không hiểu, Em sữa mà chưa được (Em tạm thời bỏ qua để build thử).
- Sau khi Build DLL em khai báo trong VBA:
Declare PtrSafe Function Test Lib "GetSheet.dll" () As Variant
Sub Main_ShName()
Call Test
End Sub
Nhưng khi chạy thì báo lỗi. Em nghỉ do bị lõi truyền App
//App phai dc truyen vao tu Excel
for I := 1 to App.Worksheets.Count do
...
Nhở Anh xem lại giúp Em với.
Cảm ơn Anh !

Bạn phải sửa code hàm trong Delphi để nó đón nhập Application từ VBA (bên ngoài) là
Mã:
function Test(App: IDispatch): OleVariant; stdcall;
var
  App, ws: OleVariant;
  sSheetName,Lastvalue: String;
  Last: Longint;
  I: Integer;
begin
  //App phai dc truyen vao tu Excel
  for I := 1 to OleVariant(App).Worksheets.Count do
  begin
    ws := App.Worksheets[I];
    if (ws.Name <> 'Sheet1') and (ws.Name <> 'Sheet2') then
    begin
      sSheetName := ws.Name;
      Last := ws.Range['B65536'].End[xlUp].Row;
      Lastvalue := ws.Range['B' + IntToStr(Last)].Value;
      ShowMessage(sSheetName);
      ShowMessage(IntToStr(Last));
      ShowMessage(Lastvalue);
    end;
  end;

end;

Trong VBA khai báo hàm là
'Nếu Office 64 bit
Declare PtrSafe Function Test Lib "GetSheet.dll" (App As Application) As Variant


'Nếu Office 32 bit
Declare Function Test Lib "GetSheet.dll" (App As Application) As Variant
Bài đã được tự động gộp:



Vậy phải xem code bạn viết trong sự kiện nào của List2 và bạn gán dữ liệu thế nào? Mình làm Delphi 11 năm nay chưa gặp vấn đề này bao giờ :D[/QUOTE]
Em Build lại mà vẫn không được Anh ạ, Anh rảnh hay Bạn nào xem giúp mình với.
Cảm ơn nhiều !
 

File đính kèm

Upvote 0
Trong code bạn hãy thay xlUp thành -4162 vì đây là hằng số bạn phải khai báo Unit "ExcelXP". Bạn làm rồi biên dichjneeus lỗi hãy chụp hình ảnh báo lỗi nhé. Hiện nay mình không dùng máy tính.
 
Upvote 0
Trong code bạn hãy thay xlUp thành -4162 vì đây là hằng số bạn phải khai báo Unit "ExcelXP". Bạn làm rồi biên dichjneeus lỗi hãy chụp hình ảnh báo lỗi nhé. Hiện nay mình không dùng máy tính.
Em Google thì có 2 kiểu cho xlUp như sau:
const
xlUp = $FFFFEFBE;


unit XLConst;
interface
XlDirection = TOleEnum;
const
xlPatternUp = -4162;
implementation
end.
Nhưng vẫn không được, Anh xem lại code và Build thử cho em project này hoàn chỉnh được không.

Cảm ơn Anh !
 

File đính kèm

Upvote 0
Em Google thì có 2 kiểu cho xlUp như sau:
const
xlUp = $FFFFEFBE;


unit XLConst;
interface
XlDirection = TOleEnum;
const
xlPatternUp = -4162;
implementation
end.
Nhưng vẫn không được, Anh xem lại code và Build thử cho em project này hoàn chỉnh được không.

Cảm ơn Anh !
Các Anh giúp Em Project này với !!!
 
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.
Công việc giải quyết xong tạm ổn nay lại nghiên cứu Delphi tiếp

Cái bài 454 đó bạn giải quyết xử lý Unicode sao rồi ... Mạnh hỏi để mai mốt cài cái Server khi nào rảnh quậy một tí ??!!
 
Upvote 0
Công việc giải quyết xong tạm ổn nay lại nghiên cứu Delphi tiếp

Cái bài 454 đó bạn giải quyết xử lý Unicode sao rồi ... Mạnh hỏi để mai mốt cài cái Server khi nào rảnh quậy một tí ??!!
Giải quyết xong hết mọi lỗi luôn rồi
Xét Unicode làm theo cách đó cũng được nhưng mình làm theo kiểu khác gán tmp: OleVariant (Parameters[RC].Value:=tmp)
Giờ mình đang đuối ý tưởng trang trí Form làm sao cho đẹp :(:(:(:(

A2h tiện đây cho mình hỏi xíu luôn, có nên lưu ảnh vào SQL không đang phân vân mà chưa biết xử lý sao hichichic
 
Lần chỉnh sửa cuối:
Upvote 0
Giải quyết xong hết mọi lỗi luôn rồi
Xét Unicode làm theo cách đó cũng được nhưng mình làm theo kiểu khác gán tmp: OleVariant (Parameters[RC].Value:=tmp)
Giờ mình đang đuối ý tưởng trang trí Form làm sao cho đẹp :(:(:(:(

A2h tiện đây cho mình hỏi xíu luôn, có nên lưu ảnh vào SQL không đang phân vân mà chưa biết xử lý sao hichichic
vừa làm vừa nghiên cứu và học mà cứ thử làm đi xem sao nó mới phát sinh cái hay

còn câu sau mạnh ko hiểu giải thích thêm cho Mạnh 1 chút

Mã:
OleVariant (Parameters[RC].Value:=tmp)
 
Upvote 0
vừa làm vừa nghiên cứu và học mà cứ thử làm đi xem sao nó mới phát sinh cái hay

còn câu sau mạnh ko hiểu giải thích thêm cho Mạnh 1 chút

Mã:
OleVariant (Parameters[RC].Value:=tmp)
OleVariant (Parameters[RC].Value:=tmp) - Cái này mình ghi chú hihi
Cái này mình viết cái function để inser hay update cho SQL. mình dùng TADOQuery của Delphi chú không phải CreateOleObject('ADODB.Recordset');
đại khái nôm na như vầy
tmp:OleVariant;
ArrayQueryValue: array of OleVariant
RC: Integer
ArrayQuery:= [trim(edt_CMND.Text), DateForSQL(dtp_NgaycapCMND.Date)]
for i := Low(ArrayQuery) to High(ArrayQuery) do
tmp:=ArrayQuery[1]
Add dữ liệu vào SQL
Query.Parameters[RC].Value:=tmp;
 
Upvote 0
To @thuyyeu99
Mạnh đang tự đặt ra mấy câu hỏi sau xong có hướng nghiên cứu Nè

1/ Sử dụng ADO truy cập vào máy khác qua LAN lấy và ghi dữ liệu mà không phải Share Full Folder ????!!!!
2/ Tại sao chỉ khi cài SQL server thì mới lấy được dữ liêu qua Internet ???!!! tại sao ta ko thử cách khác thay thế nó ???!!!
....................................
Câu 1 Mạnh đã làm OK
Câu 2 chưa biết khi nào ..... chờ ý hay của bạn
 
Upvote 0
To @thuyyeu99
Mạnh đang tự đặt ra mấy câu hỏi sau xong có hướng nghiên cứu Nè

1/ Sử dụng ADO truy cập vào máy khác qua LAN lấy và ghi dữ liệu mà không phải Share Full Folder ????!!!!
2/ Tại sao chỉ khi cài SQL server thì mới lấy được dữ liêu qua Internet ???!!! tại sao ta ko thử cách khác thay thế nó ???!!!
....................................
Câu 1 Mạnh đã làm OK
Câu 2 chưa biết khi nào ..... chờ ý hay của bạn
Minh co nghe noi toi datasap minh doc tieng anh kho hiểu qua.
Minh cung dang bi cai van de thu 2 cua manh, dot truoc minh cung tim hieu chat qua ip internet ma con ket noi data , bo tay chua mo ra, chac kien thuc tin hoc yếu qua
Manh thu tim hieu cai datasnap thu xem.
 
Upvote 0
Minh co nghe noi toi datasap minh doc tieng anh kho hiểu qua.
Minh cung dang bi cai van de thu 2 cua manh, dot truoc minh cung tim hieu chat qua ip internet ma con ket noi data , bo tay chua mo ra, chac kien thuc tin hoc yếu qua
Manh thu tim hieu cai datasnap thu xem.

Mạnh mới thử lấy dữ liệu từ máy latop có kết nối Wifi thấy ok ko biết như vậy nó có hiểu là lấy dữ liệu trong mạng LAN ko nữa hay là qua Internet ????!!!!!!!!!!!

Ngày mai mang cái latop sang quán cafe test cái nếu lấy được dữ liệu trên máy bàn Ở nhà thì coi như là xong Hehehehehehe
 
Upvote 0
Mạnh mới thử lấy dữ liệu từ máy latop có kết nối Wifi thấy ok ko biết như vậy nó có hiểu là lấy dữ liệu trong mạng LAN ko nữa hay là qua Internet ????!!!!!!!!!!!

Ngày mai mang cái latop sang quán cafe test cái nếu lấy được dữ liệu trên máy bàn Ở nhà thì coi như là xong Hehehehehehe
manh lam cach nao
Bài đã được tự động gộp:

Mạnh mới thử lấy dữ liệu từ máy latop có kết nối Wifi thấy ok ko biết như vậy nó có hiểu là lấy dữ liệu trong mạng LAN ko nữa hay là qua Internet ????!!!!!!!!!!!

Ngày mai mang cái latop sang quán cafe test cái nếu lấy được dữ liệu trên máy bàn Ở nhà thì coi như là xong Hehehehehehe
hình như muốn kết nối qua intenrt phải mở Port
 
Upvote 0
Upvote 0
coi trên điện thoại hay sao mà viết ko dấu là họ la làng đó
Mai Mạnh thử xong xuoi cái đã xong tính nếu ok thì tuyệt vời đó ... sử dụng ADO lấy dữ liệu qua Internet mà ko phải cài SQL server he ....
Hồi nãy viết trên điện thoại, mới chiếm quyền sử dụng máy tính nên mới dánh chính tả được hihihih. Mạnh nói sơ sơ cái hướng để mình hình dung với thắc mắt quá đi

Mạnh là Trùm Mò
 
Upvote 0

Bài viết mới nhất

Back
Top Bottom