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:
:oops::rolleyes:o_O:rolleyes::oops::oops::rolleyes:o_O trời nói thiệt mà hông tin :oops::rolleyes:o_Oo_O:rolleyes::oops:
Vào Link sau tham khảo thêm nè Cấu hình tường lửa với cmd
Vậy là tự tay viết 1 cái Add-Ins truy vấn dữ liệu qua Internet ròi đó he
http://thoughtsonopsmgr.blogspot.com/2016/12/ws-2016-server-core-sql-server-2016.html
Coi trong đó thấy có khúc sau:

Create exceptions in Windows Firewall
Do this locally on the VM hosting the relevant SQL version. Start PowerShell when logging in.
These two lines will allow remote access to the default SQL version via TCP port 1433 :
Netsh firewall sets the protocol portopening = TCP port = 1433 name = SQLPort mode = ENABLE scope = SUBNET profile = CURRENT

Netsh advfirewall adds name rule = SQLPort dir = in Protocol = tcp action = allow localport = 1433 remoteip = localsubnet profile = DOMAIN

These two lines will allow remote access from SQL Server Management Studio to SQL version via TCP Port 1434 (also called SQL Admin Connection ) :
netsh firewall set portopening protocol port = TCP = 1434 name mode = SQLPort = ENABLE scope = SUBNET profile = CURRENT

advfirewall netsh firewall add rule name = SQLPort dir = in protocol = tcp action = localport = 1434 remoteip = localsubnet = DOMAIN profile

Mà Link sau Bác Bill cũng keo thế
https://docs.microsoft.com/en-us/sq...-allow-sql-server-access?view=sql-server-2017
 
Upvote 0
Vào Link sau tham khảo thêm nè Cấu hình tường lửa với cmd
Vậy là tự tay viết 1 cái Add-Ins truy vấn dữ liệu qua Internet ròi đó he
http://thoughtsonopsmgr.blogspot.com/2016/12/ws-2016-server-core-sql-server-2016.html
Coi trong đó thấy có khúc sau:

Create exceptions in Windows Firewall
Do this locally on the VM hosting the relevant SQL version. Start PowerShell when logging in.
These two lines will allow remote access to the default SQL version via TCP port 1433 :
Netsh firewall sets the protocol portopening = TCP port = 1433 name = SQLPort mode = ENABLE scope = SUBNET profile = CURRENT

Netsh advfirewall adds name rule = SQLPort dir = in Protocol = tcp action = allow localport = 1433 remoteip = localsubnet profile = DOMAIN

These two lines will allow remote access from SQL Server Management Studio to SQL version via TCP Port 1434 (also called SQL Admin Connection ) :
netsh firewall set portopening protocol port = TCP = 1434 name mode = SQLPort = ENABLE scope = SUBNET profile = CURRENT

advfirewall netsh firewall add rule name = SQLPort dir = in protocol = tcp action = localport = 1434 remoteip = localsubnet = DOMAIN profile

Mà Link sau Bác Bill cũng keo thế
https://docs.microsoft.com/en-us/sq...-allow-sql-server-access?view=sql-server-2017
Anh thử chưa, còn cái vụ Nat port của router
 
Upvote 0
Upvote 0
Vụ NAT port anh kieu manh vào group facebook "Smart Home Việt" sẽ có 5 ngàn anh em hướng dẫn cho, bao gồm cả cách kêu nhà mạng thay modem..
 
Upvote 0
Vụ NAT port anh kieu manh vào group facebook "Smart Home Việt" sẽ có 5 ngàn anh em hướng dẫn cho, bao gồm cả cách kêu nhà mạng thay modem..
Cái dòng to đó hay đó tại vì Mạnh xài gói 30M mà nâng cấp lên ko làm chi cả chỉ mục đích quậy code thấy phí quá ....
Mai lượn phố 1 vòng xem sao nếu ko được đập một cái cho cái Modem đó hỏng đi xong keo nó thây vậy ????!!!
 
Upvote 0
To @thuyyeu99
Mạnh thấy trên mạng có Hàm này đang tìm cách xài mà nó cứ báo Lỗi

Làm cách nào để gán máy tính một địa chỉ IP tĩnh?
Sử dụng lớp Win32_NetworkAd ModuleConfiguration và phương thức EnableStatic .
Mã:
function ArrayToVarArray(Arr : Array Of string):OleVariant; overload;
var
 i : integer;
begin
    Result   :=VarArrayCreate([0, High(Arr)], varVariant);
    for i:=Low(Arr) to High(Arr) do
     Result[i]:=Arr[i];
end;
 
function ArrayToVarArray(Arr : Array Of Word):OleVariant;overload;
var
 i : integer;
begin
    Result   :=VarArrayCreate([0, High(Arr)], varVariant);
    for i:=Low(Arr) to High(Arr) do
     Result[i]:=Arr[i];
end;
 
procedure  SetStaticIP;
const
  wbemFlagForwardOnly = $00000020;
var
  FSWbemLocator : OLEVariant;
  FWMIService   : OLEVariant;
  FWbemObjectSet: OLEVariant;
  FWbemObject   : OLEVariant;
  oEnum         : IEnumvariant;
  iValue        : LongWord;
  vIPAddress         : OleVariant;
  vSubnetMask        : OleVariant;
  vDefaultIPGateway  : OleVariant;
  vGatewayCostMetric : OleVariant;
begin
  FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
  FWMIService   := FSWbemLocator.ConnectServer('localhost', 'root\CIMV2', '', '');
  FWbemObjectSet:= FWMIService.ExecQuery('SELECT * FROM Win32_NetworkAdapterConfiguration Where IPEnabled=True','WQL',wbemFlagForwardOnly);
  oEnum         := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;
  while oEnum.Next(1, FWbemObject, iValue) = 0 do
  begin
    vIPAddress   := ArrayToVarArray(['192.168.1.141']);
    vSubnetMask  := ArrayToVarArray(['255.255.255.0']);
    if FWbemObject.EnableStatic(vIPAddress, vSubnetMask) = 0 then
    begin
      vDefaultIPGateway  := ArrayToVarArray(['192.168.1.100']);
      vGatewayCostMetric := ArrayToVarArray([1]);
      FWbemObject.SetGateways(vDefaultIPGateway,vGatewayCostMetric);
    end;
 
    VarClear(vIPAddress);
    VarClear(vSubnetMask);
    VarClear(vDefaultIPGateway);
    VarClear(vGatewayCostMetric);
    FWbemObject:=Unassigned;
  end;
end;
 
Upvote 0
To @thuyyeu99
Mạnh thấy trên mạng có Hàm này đang tìm cách xài mà nó cứ báo Lỗi

Làm cách nào để gán máy tính một địa chỉ IP tĩnh?
Sử dụng lớp Win32_NetworkAd ModuleConfiguration và phương thức EnableStatic .
Mã:
function ArrayToVarArray(Arr : Array Of string):OleVariant; overload;
var
i : integer;
begin
    Result   :=VarArrayCreate([0, High(Arr)], varVariant);
    for i:=Low(Arr) to High(Arr) do
     Result[i]:=Arr[i];
end;

function ArrayToVarArray(Arr : Array Of Word):OleVariant;overload;
var
i : integer;
begin
    Result   :=VarArrayCreate([0, High(Arr)], varVariant);
    for i:=Low(Arr) to High(Arr) do
     Result[i]:=Arr[i];
end;

procedure  SetStaticIP;
const
  wbemFlagForwardOnly = $00000020;
var
  FSWbemLocator : OLEVariant;
  FWMIService   : OLEVariant;
  FWbemObjectSet: OLEVariant;
  FWbemObject   : OLEVariant;
  oEnum         : IEnumvariant;
  iValue        : LongWord;
  vIPAddress         : OleVariant;
  vSubnetMask        : OleVariant;
  vDefaultIPGateway  : OleVariant;
  vGatewayCostMetric : OleVariant;
begin
  FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
  FWMIService   := FSWbemLocator.ConnectServer('localhost', 'root\CIMV2', '', '');
  FWbemObjectSet:= FWMIService.ExecQuery('SELECT * FROM Win32_NetworkAdapterConfiguration Where IPEnabled=True','WQL',wbemFlagForwardOnly);
  oEnum         := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;
  while oEnum.Next(1, FWbemObject, iValue) = 0 do
  begin
    vIPAddress   := ArrayToVarArray(['192.168.1.141']);
    vSubnetMask  := ArrayToVarArray(['255.255.255.0']);
    if FWbemObject.EnableStatic(vIPAddress, vSubnetMask) = 0 then
    begin
      vDefaultIPGateway  := ArrayToVarArray(['192.168.1.100']);
      vGatewayCostMetric := ArrayToVarArray([1]);
      FWbemObject.SetGateways(vDefaultIPGateway,vGatewayCostMetric);
    end;

    VarClear(vIPAddress);
    VarClear(vSubnetMask);
    VarClear(vDefaultIPGateway);
    VarClear(vGatewayCostMetric);
    FWbemObject:=Unassigned;
  end;
end;
Anh nghiên cứu máy cái ngoài khả năng của em không, em không biết đường trả lời.... hichic //..,,//..,,//..,,//..,,
Mấy cái này chắc phải nhờ mấy anh trong diễn đàn trợ giúp quá :;;;::::;;;:::
 
Upvote 0
Các Bạn cho Mình hỏi chút
Tại sao cái Hàm lấy IP Address sau chỉ chạy trên các Bản Delphi cũ thì tốt ... còn Mạnh chạy trên bản Delphi 10.2.3 thì nó báo lỗi
Mã:
Function GetIPAddress: String;
type pu_long = ^u_long;
var varTWSAData : TWSAData;
varPHostEnt : PHostEnt;
varTInAddr : TInAddr;
namebuf : Array[0..255] of ansichar;
begin
try
try
If WSAStartup($101,varTWSAData) <> 0 Then
Result := ''
Else Begin
gethostname(namebuf,sizeof(namebuf));
varPHostEnt := gethostbyname(namebuf);
varTInAddr.S_addr := u_long(pu_long(varPHostEnt^.h_addr_list^)^);
Result := inet_ntoa(varTInAddr);
End;
except
Result := '';
end;
finally
WSACleanup;
end;
end;
Mạnh có coi link sau thì nó cũng keo như vậy
https://stackoverflow.com/questions/18754496/delphi-xe4-get-your-local-ip-in-statusbar

Tất nhiên là Mạnh có giải pháp khác ngắn gọn hơn mà vẫn lấy IPAddress ok nhưng vẫn muốn hỏi là tại sao để học thui ???!!!

Vì Mạnh có tải rất nhiều code trên mạng về coi thì thấy nó báo lỗi thiếu thành phần + Build Delphi mới nhất không hổ Trợ
vì vậy muốn hỏi để hiểu thêm một chút ??!!!

Hiện Mạnh xài hàm sau lấy IP LAN nó ngắn gọn hơn ... úp lên cho bạn nào iu nó
Mã:
Uses IdStack;
function GetIpLAN:String;
begin 
  TIdStack.IncUsage;
  try
    Result := GStack.LocalAddress; 
  finally
    TIdStack.DecUsage;
  end;
end;
 
Lần chỉnh sửa cuối:
Upvote 0
Các anh chị cho em hỏi chút...
Em thử chuyển dữ liệu Access từ sever qua client có 10.000 dòng và 23 cột mà nó chạy gần 30 phút....
không biết có cách nào chuyển dữ liệu từ Sever qua Client lẹ hoặc tối ưu nhất không ah.
Cám ơn các anh chị quan tâm
 
Upvote 0
dạo này mò sao rồi anh không thấy nói năng gì hết vậy.
Em giải quyết được vấn đề của em rồi hihi lấy dữ liệu 10.000 ngàn dòng từ 30 phút xuống còn 6 giây hihihihi
 
Upvote 0
Các anh chị cho em hỏi chút...
Em thử chuyển dữ liệu Access từ sever qua client có 10.000 dòng và 23 cột mà nó chạy gần 30 phút....
không biết có cách nào chuyển dữ liệu từ Sever qua Client lẹ hoặc tối ưu nhất không ah.
Cám ơn các anh chị quan tâm
lâu nay nghiên cứu tới đâu rồi

Sau nhiều ngày Nat Port Modem cuối cung Mạnh đã làm xong và mới thử cái Server xem sao thì thấy Ok

1/ Sau khi mở Port xong thử chạy cái Server thấy Ok .... 1 máy hay + N máy Trên Internet kết nối vào cùng 1 lúc ok hết
2/ Mạnh xài IP Internet động để Test xem sao sau đó mới nghiên cứu cách chuyển cái IP đó tới máy khách qua khâu trung gian
3/ Xem hình he ...............................ok....................hehehehe
Sever.PNG
 
Upvote 0
lâu nay nghiên cứu tới đâu rồi

Sau nhiều ngày Nat Port Modem cuối cung Mạnh đã làm xong và mới thử cái Server xem sao thì thấy Ok

1/ Sau khi mở Port xong thử chạy cái Server thấy Ok .... 1 máy hay + N máy Trên Internet kết nối vào cùng 1 lúc ok hết
2/ Mạnh xài IP Internet động để Test xem sao sau đó mới nghiên cứu cách chuyển cái IP đó tới máy khách qua khâu trung gian
3/ Xem hình he ...............................ok....................hehehehe
View attachment 210472
Máy bữa nay em đang mo cái send query từ sever qua client nên không test mạng de xong cái đã hihihih.
Chuẩn bị mò tới máp cái thư mục qua ip
 
Upvote 0
lâu nay nghiên cứu tới đâu rồi

Sau nhiều ngày Nat Port Modem cuối cung Mạnh đã làm xong và mới thử cái Server xem sao thì thấy Ok

1/ Sau khi mở Port xong thử chạy cái Server thấy Ok .... 1 máy hay + N máy Trên Internet kết nối vào cùng 1 lúc ok hết
2/ Mạnh xài IP Internet động để Test xem sao sau đó mới nghiên cứu cách chuyển cái IP đó tới máy khách qua khâu trung gian
3/ Xem hình he ...............................ok....................hehehehe
Xong vụ nat port rồi à anh? hê hê. :)
 
Upvote 0
Máy bữa nay em đang mo cái send query từ sever qua client nên không test mạng de xong cái đã hihihih.
Chuẩn bị mò tới máp cái thư mục qua ip
Thử vô link sau tham khảo xem sao
https://medium.com/dev-blogs/transferring-files-between-remote-server-and-local-system-133d78d58137

Mạnh đang mò cái này nó lại liên quan cái khác mò qua mò lại đang bị rối tinh hết lên .... qua cái giai đoạn rối tinh đó ... xong hệ thống lại mọi cái là viết code ok đó ==========> Kinh nghiệm quậy code két cho Mạnh thấy điều đó

Lý luận khái quát từ thực tiễn mà ra là thế ???!!!!===\._)()(-:close_tema:
 
Upvote 0
Thử vô link sau tham khảo xem sao
https://medium.com/dev-blogs/transferring-files-between-remote-server-and-local-system-133d78d58137

Mạnh đang mò cái này nó lại liên quan cái khác mò qua mò lại đang bị rối tinh hết lên .... qua cái giai đoạn rối tinh đó ... xong hệ thống lại mọi cái là viết code ok đó ==========> Kinh nghiệm quậy code két cho Mạnh thấy điều đó

Lý luận khái quát từ thực tiễn mà ra là thế ???!!!!===\._)()(-:close_tema:
Máy hôm nay em bận quá không có nghiên cứu được

Với lại sắp ra lò Hàm SuperFuntionSQL hihihii
 
Upvote 0
Các Bạn Cho Mạnh hỏi chút
1/ Khi mình truyền 1 tham Số đường dẫn File là Code như sau vào Delphi Thì nó Chạy tốt :
Mã:
ExcelPath = ThisWorkbook.Path & "\Data.xlsb"

2/ Khi mình Viết cái đường dẫn mục 1 đó Lên Cells thì nó báo Lỗi Không chạy
Mã:
D:\DelphiExamples\VBLibrary\Win32\Debug\Data.xlsb

2 đường dẫn trên là như nhau chỉ khác là trong Code và trên Cells
nó báo lỗi như sau ... Mong các Bạn Chỉ mình cách xài đường dẫn trên Cells với
Capture.PNG
 
Upvote 0
Các Bạn Cho Mạnh hỏi chút
1/ Khi mình truyền 1 tham Số đường dẫn File là Code như sau vào Delphi Thì nó Chạy tốt :
Mã:
ExcelPath = ThisWorkbook.Path & "\Data.xlsb"

2/ Khi mình Viết cái đường dẫn mục 1 đó Lên Cells thì nó báo Lỗi Không chạy
Mã:
D:\DelphiExamples\VBLibrary\Win32\Debug\Data.xlsb

2 đường dẫn trên là như nhau chỉ khác là trong Code và trên Cells
nó báo lỗi như sau ... Mong các Bạn Chỉ mình cách xài đường dẫn trên Cells với
View attachment 211596
Em nghĩ phải khai báo biến variant rồi gán cái giá trị cell đó vô biến variant đó.
 
Upvote 0
Web KT
Back
Top Bottom