text:
Tin tức, hình ảnh về top knot
Tìm kiếm tin tức liên quan top knot mới, nhanh và đầy đủ nhất
Tin tức mới nhất top knot 1/1
Những kiểu tóc được sao ưa chuộng nhất năm 2016
Búi củ tỏi nửa đầu, mái xoăn, búi rối... là những mẫu tóc được các người đẹp yêu thích nhất năm qua.
6 bước để các chàng trai tự tin sở hữu mái tóc thời thượng
Để có được mái tóc cắt đẹp và hợp thời trang, nam giới không nên bỏ qua các bước dưới đây.
Người mẫu biến hóa với 12 kiểu tóc nam hot nhất 2015
Clip hướng dẫn chi tiết cách biến đổi những phong cách tóc nam hot nhất hiện nay của một nhà tạo mẫu đã thu hút hơn 6 triệu lượt người xem trên YouTube.
Quiff - kiểu tóc chưa bao giờ lỗi mốt của phái mạnh
Giữa nhưng cơn sốt như undercut hay top-knot đang thịnh hành nhiều năm qua, kiểu tóc quiff vẫn chinh phục được các đấng mày râu chuộng vẻ cổ điển.
6 biến tấu ngọt ngào cho kiểu tóc búi
Mùa hè năng động sắp đến gần cũng là lúc các kiểu tóc búi buộc gọn gàng, mát mẻ lên ngôi.
Gợi ý tóc dự tiệc từ các kiều nữ thế giới
Những kiểu tóc quyến rũ, gợi cảm của các ngôi sao hàng đầu thế giới sẽ là những gợi ý hoàn hảo cho bạn trong mùa tiệc tùng này.

markdown:
# Tin tức, hình ảnh về top knot
Tìm kiếm tin tức liên quan top knot mới, nhanh và đầy đủ nhất
### Tin tức mới nhất
**top knot** 1/1 [
Những kiểu tóc được sao ưa chuộng nhất năm 2016
](/nhung-kieu-toc-khien-sao-me-man-nam-2016-post707733.html#detail0)
Búi củ tỏi nửa đầu, mái xoăn, búi rối... là những mẫu tóc được các người đẹp yêu thích nhất năm qua.
[
6 bước để các chàng trai tự tin sở hữu mái tóc thời thượng
](/6-buoc-de-cac-chang-trai-tu-tin-so-huu-mai-toc-thoi-thuong-post565878.html#detail0)
Để có được mái tóc cắt đẹp và hợp thời trang, nam giới không nên bỏ qua các bước dưới đây.
[
Người mẫu biến hóa với 12 kiểu tóc nam hot nhất 2015
](/nguoi-mau-bien-hoa-voi-12-kieu-toc-nam-hot-nhat-2015-post564048.html#detail0)
Clip hướng dẫn chi tiết cách biến đổi những phong cách tóc nam hot nhất hiện nay của một nhà tạo mẫu đã thu hút hơn 6 triệu lượt người xem trên YouTube.
[
Quiff - kiểu tóc chưa bao giờ lỗi mốt của phái mạnh
](/quiff-kieu-toc-chua-bao-gio-loi-mot-cua-phai-manh-post552704.html#detail0)
Giữa nhưng cơn sốt như undercut hay top-knot đang thịnh hành nhiều năm qua, kiểu tóc quiff vẫn chinh phục được các đấng mày râu chuộng vẻ cổ điển.
[
6 biến tấu ngọt ngào cho kiểu tóc búi
](/6-bien-tau-ngot-ngao-cho-kieu-toc-bui-post314939.html#detail0)
Mùa hè năng động sắp đến gần cũng là lúc các kiểu tóc búi buộc gọn gàng, mát mẻ lên ngôi.
[
Gợi ý tóc dự tiệc từ các kiều nữ thế giới
](/goi-y-toc-du-tiec-tu-cac-kieu-nu-the-gioi-post291397.html#detail0)
Những kiểu tóc quyến rũ, gợi cảm của các ngôi sao hàng đầu thế giới sẽ là những gợi ý hoàn hảo cho bạn trong mùa tiệc tùng này.

X-Cache: MISS from xCache-11429090


text:
Vương Mộng Giai
Tìm kiếm tin tức liên quan Vương Mộng Giai mới, nhanh và đầy đủ nhất
Tin tức mới nhất Vương Mộng Giai 1/1
Nhan sắc Hoa hậu Hoàn vũ Trung Quốc 2015 bị chê nhạt nhòa
Nữ sinh 21 tuổi đăng quang Hoa hậu có chiều cao lý tưởng nhưng gương mặt bị đánh giá là không ăn ảnh.

markdown:
# Vương Mộng Giai
Tìm kiếm tin tức liên quan Vương Mộng Giai mới, nhanh và đầy đủ nhất
### Tin tức mới nhất
**Vương Mộng Giai** 1/1 [
Nhan sắc Hoa hậu Hoàn vũ Trung Quốc 2015 bị chê nhạt nhòa
](/nhan-sac-hoa-hau-hoan-vu-trung-quoc-2015-bi-che-nhat-nhoa-post574744.html#detail0)
Nữ sinh 21 tuổi đăng quang Hoa hậu có chiều cao lý tưởng nhưng gương mặt bị đánh giá là không ăn ảnh.

WARC-Type: response

Content-Type: application/http; msgtype=response

WARC-Identified-Payload-Type: application/xhtml+xml

Content-Type: text/html; charset=utf-8

Connection: close

Cache-Control: private

X-Cache: MISS from xCache-11419090


text:
Cao linh chi hàn quốc 150gr thượng hạng
Cao linh chi là sản phẩm được cô đặc với 100% tinh chất linh chi . Sản xuất trên công nghệ hiện đại và tiên tiến , chắt lọc đầy đủ tinh túy từ thảo dược quý nấm linh chi có công dụng tốt cho sức khỏe , phòng chống và hỗ trợ điều trị các căn bênh nan y rất hữu hiệu .Cao linh chi sử dụng không mang đến những tác dụng phụ mọi đối tượng đều có thể sử dụng để mang đến lợi ích tốt nhất .
Thành phần chủ yếu : Sản phẩm 100% nguyên chất lỏng chiết xuất từ Linh Chi Hàn Quốc được lựa chọn kỹ càng và hợp vệ sinh
Quy cách đóng gói: 1 hộp gỗ lớn có 3 lọ nhỏ, mỗi lọ 120 gram.
Cao linh chi hàn quốc mang đến những công dụng gì :
- Cao linh chi có tác dụng phòng và hỗ trợ điều trị ung thư chất germanium có khả năng ức chế và ngăn chặn sự phát triển của tế bào ung thư
- Cao linh chi hàn quốc tốt cho hệ tiêu hóa đồng thời hỗ trợ phòng và chữa bệnh đái tháo đường
- Cao linh chi tốt cho người bị bênh gan , mật , thận suy , giúp giảm lượng mỡ máu có trong cơ thể
- Có tác dụng đối với các bệnh về đau thắt cơ tim, bệnh ở mạch vành tim .Bệnh viêm phế quản, hen , những chứng bệnh về sương khớp
- Linh chi có tác dụng tiêu độc , giải độc và bổ máu rất tốt , hỗ trợ điều trị sỏi thận , có công dụng an thần tăng cường trí nhớ
- Đối với người già khi dùng cao linh chi sẽ giúp tăng cường tính lực , giảm các chứng về đãng trí , mất trí , đi tiểu đêm …
- Cao linh chi hàn quốc có tác dụng trong công cuộc làm đẹp , chống béo phì , chống sần da ở đàn ông , đẩy lùi nám da và tàn nhang ở phụ nữ mang đến cho phái đẹp làn da mịn màng không mụn nhọt . Dùng cao linh chi một các thường xuyên và hợp lí để ngăn ngừa lão hóa . Đối với phụ nữ giúp cải thiện những rắc rối khó chịu trong thời kì mãn kinh
-Tác dụng của cao linh chi hàn quốc còn thể hiện ở khả năng ổn định và cân bằng huyết áp , hạ cholesterol , giảm các bệnh về xơ vữa động mạch
Cao linh chi dùng như thế nào
Cao linh chi han quoc có 2 cách dùng chính nếu là để phòng bệnh mỗi ngày uống 2 lần. Mỗi lần uống: lấy 1 thìa cao nhỏ (có trong hộp thuốc), pha với nước ấm rồi uống trước bữa ăn 15-20phút.Nếu mục đích dùng để chữa bệnh thì mỗi ngày uống 3 lần. Mỗi lần uống 2 thìa cao nhỏ, pha với nước ấm, uống trước bữa ăn 15-20phút. Trong quá trình dùng cao linh chi chúng ta sẽ thấy có cảm giác đói bụng, khi uống thuốc xong khoảng 15-20 phút phải ăn đó là bình thường sau một thời gian dùng thuốc sẽ có cảm giác ăn ngon, ngủ ngon
Cách bảo quản : Bảo quản ở nơi thoáng mát, tránh ánh nắng trực tiếp
Những câu hỏi hay gặp khi dùng Cao linh chi :
Dùng cao linh chi có gây ra phản ứng phụ không ?
1. Dùng cao linh chi Có phản ứng phụ nào không?
Nấm Linh Chi được coi là dược thảo siêu hạng , có nghĩa là những dược thảo mà con người có thể dùng lâu dài với số lượng lớn mà vô hại.Nấm linh chi được phát hiện từ ngàn đời nay , cho đến bây giờ khi khoa học kĩ thuật phát triển với những nghiên cứu và khảo nghiệm về linh chi vẫn chứng minh được khi dùng linh chi mang đến rất nhiều công dụng mà không thấy những tác dụng phụ liên quan . Thế nhưng với những người quá nhạy cảm cũng có thể gặp một vài triệu chứng như cảm thấy hơi khó tiêu hoặc là chóng mặt, ngứa ngoài da trong thời gian đầu dùng nấm Linh Chi , tuy nhiên sau một thơi gian khi quên với sản phẩm thì sẽ cảm thấy bình thường không có những tác dụng nào .Linh chi được sếp hạng nhất vào thảo dược an toàn
2. Có phải nấm Linh Chi tốt cho mọi lứa tuổi?
Nấm Linh Chi là dược thảo cũng là món quà thiên nhiên vô giá đến từ thiên nhiên . Nấm linh chi bổ sung cho sức khỏe có tác dụng tốt cho mọi lứa tuổi trong đó có cả trẻ và phụ nữ mang thai. Nhưng tốt hơn hết khi muốn sử dụng linh chi nên hỏi ý kiến thầy thuốc trước khi dùng
3. Có thể kết hợp dùng cao linh chi với các thứ thuốc khác được không?
Điều này là được tuy nhiên để mang đến lợi ích tốt nhân nên tham khỏa ý kiến của các bác sĩ để có cách sử dụng hợp lí .
4. Dùng cao linh chi bao lâu thì sẽ có tác dụng ?
Thông thường sâu 2 tháng sử dụng cao linh chi sẽ cảm nhận được tác dụng và lợi ích cũng như những thay đổi trên cơ thể .Tuy nhiên cũng tùy từng cơ địa của mỗi người mà tác dụng đó đến nhanh hay chậm.
5. Cao linh chi chỉ dùng khi bị bệnh:
Khi sử dụng cao linh chi hàn quốc sẽ nâng cao được hệ thống miễn dịch , sức để kháng , giải độc , thanh lọc cơ thể chính vì thế mà nếu không bị bệnh chúng ta vẫn có thể dùng cao linh chi để phòng chống bệnh tật , nâng cao sức khỏe , bảo vệ cơ thể bất kể lúc nào
Để nghe tư vấn hoặc đặt hàng sản phẩm bạn liên hệ theo Hotline : 0123 6355 666 . Siêu thị sâm hàn quốc tự hào nơi cung cấp tất cả những sản phẩm về Sâm hàn quốc , Nấm linh chi hàn quốc, Đạm sâm Hàn Quốc, Đông trùng hạ thảo chất lượng hàng đầu Việt Nam .
Đánh giá
There are no reviews yet, would you like to submit yours?

markdown:
**Cao linh chi hàn quốc 150gr thượng hạng** **Cao linh chi hàn quốc 150gr thượng hạng** **Cao linh chi** là sản phẩm được cô đặc với 100% tinh chất linh chi . Sản xuất trên công nghệ hiện đại và tiên tiến , chắt lọc đầy đủ tinh túy từ thảo dược quý nấm linh chi có công dụng tốt cho sức khỏe , phòng chống và hỗ trợ điều trị các căn bênh nan y rất hữu hiệu .Cao linh chi sử dụng không mang đến những tác dụng phụ mọi đối tượng đều có thể sử dụng để mang đến lợi ích tốt nhất . **Thành phần chủ yếu** * : Sản phẩm 100% nguyên chất lỏng chiết xuất từ Linh Chi Hàn Quốc được lựa chọn kỹ càng và hợp vệ sinh* **Quy cách đóng gói:** 1 hộp gỗ lớn có 3 lọ nhỏ, mỗi lọ 120 gram.
**Cao linh chi hàn quốc mang đến những công dụng gì :**
- Cao linh chi có tác dụng phòng và hỗ trợ điều trị ung thư chất germanium có khả năng ức chế và ngăn chặn sự phát triển của tế bào ung thư
-
[tốt cho hệ tiêu hóa đồng thời hỗ trợ phòng và chữa bệnh đái tháo đườngCao linh chi hàn quốc ](http://sieuthisamhanquoc.vn/product/cao-linh-chi-han-quoc-150gr-thuong-hang/)
- Cao linh chi tốt cho người bị bênh gan , mật , thận suy , giúp giảm lượng mỡ máu có trong cơ thể
- Có tác dụng đối với các bệnh về đau thắt cơ tim, bệnh ở mạch vành tim .Bệnh viêm phế quản, hen , những chứng bệnh về sương khớp
- Linh chi có tác dụng tiêu độc , giải độc và bổ máu rất tốt , hỗ trợ điều trị sỏi thận , có công dụng an thần tăng cường trí nhớ
- Đối với người già khi dùng
* sẽ giúp tăng cường tính lực , giảm các chứng về đãng trí , mất trí , đi tiểu đêm … cao linh chi*
-
[ có tác dụng trong công cuộc làm đẹp , chống béo phì , chống sần da ở đàn ông , đẩy lùi nám da và tàn nhang ở phụ nữ mang đến cho phái đẹp làn da mịn màng không mụn nhọt . Dùng Cao linh chi hàn quốc](http://aloola.vn/cao-linh-chi/) *một các thường xuyên và hợp lí để ngăn ngừa lão hóa . Đối với phụ nữ giúp cải thiện những rắc rối khó chịu trong thời kì mãn kinh* **cao linh chi**
-Tác dụng của
* còn thể hiện ở khả năng ổn định và cân bằng huyết áp , hạ cholesterol , giảm các bệnh về xơ vữa động mạch cao linh chi hàn quốc*
**Cao linh chi dùng như thế nào ** **Cao linh chi han quoc** có 2 cách dùng chính nếu là để phòng bệnh mỗi ngày uống 2 lần. Mỗi lần uống: lấy 1 thìa cao nhỏ (có trong hộp thuốc), pha với nước ấm rồi uống trước bữa ăn 15-20phút.Nếu mục đích dùng để chữa bệnh thì mỗi ngày uống 3 lần. Mỗi lần uống 2 thìa cao nhỏ, pha với nước ấm, uống trước bữa ăn 15-20phút. Trong quá trình dùng * chúng ta sẽ thấy có cảm giác đói bụng, khi uống thuốc xong khoảng 15-20 phút phải ăn đó là bình thường sau một thời gian dùng thuốc sẽ có cảm giác ăn ngon, ngủ ngon cao linh chi* **Cách bảo quản :** * Bảo quản ở nơi thoáng mát, tránh ánh nắng trực tiếp*
**Những câu hỏi hay gặp khi dùng Cao linh chi :** *Dùng cao linh chi có gây ra phản ứng phụ không ?* **1. Dùng cao linh chi Có phản ứng phụ nào không?** * được coi là dược thảo siêu hạng , có nghĩa là những dược thảo mà con người có thể dùng lâu dài với số lượng lớn mà vô hại.Nấm linh chi được phát hiện từ ngàn đời nay , cho đến bây giờ khi khoa học kĩ thuật phát triển với những nghiên cứu và khảo nghiệm về linh chi vẫn chứng minh được khi dùng linh chi mang đến rất nhiều công dụng mà không thấy những tác dụng phụ liên quan . Thế nhưng với những người quá nhạy cảm cũng có thể gặp một vài triệu chứng như cảm thấy hơi khó tiêu hoặc là chóng mặt, ngứa ngoài da trong thời gian đầu dùng Nấm Linh Chi* *, tuy nhiên sau một thơi gian khi quên với sản phẩm thì sẽ cảm thấy bình thường không có những tác dụng nào .Linh chi được sếp hạng nhất vào thảo dược an toàn* **nấm Linh Chi** **2. Có phải nấm Linh Chi tốt cho mọi lứa tuổi?** * là dược thảo cũng là món quà thiên nhiên vô giá đến từ thiên nhiên . Nấm Linh Chi* *bổ sung cho sức khỏe có tác dụng tốt cho mọi lứa tuổi trong đó có cả trẻ và phụ nữ mang thai. Nhưng tốt hơn hết khi muốn sử dụng linh chi nên hỏi ý kiến thầy thuốc trước khi dùng* **Nấm linh chi** **3. Có thể kết hợp dùng cao linh chi với các thứ thuốc khác được không?**
Điều này là được tuy nhiên để mang đến lợi ích tốt nhân nên tham khỏa ý kiến của các bác sĩ để có cách sử dụng hợp lí .
**4. Dùng cao linh chi bao lâu thì sẽ có tác dụng ?**
Thông thường sâu 2 tháng sử dụng cao linh chi sẽ cảm nhận được tác dụng và lợi ích cũng như những thay đổi trên cơ thể .Tuy nhiên cũng tùy từng cơ địa của mỗi người mà tác dụng đó đến nhanh hay chậm.
**5. Cao linh chi chỉ dùng khi bị bệnh:**
Khi sử dụng
* sẽ nâng cao được hệ thống miễn dịch , sức để kháng , giải độc , thanh lọc cơ thể chính vì thế mà nếu không bị bệnh chúng ta vẫn có thể dùng cao linh chi để phòng chống bệnh tật , nâng cao sức khỏe , bảo vệ cơ thể bất kể lúc nào cao linh chi hàn quốc*
Để nghe tư vấn hoặc đặt hàng sản phẩm bạn liên hệ theo
**Hotline : 0123 6355 666 **. *Siêu thị sâm hàn quốc* tự hào nơi cung cấp tất cả những sản phẩm về * chất lượng hàng đầu Việt Nam . Sâm hàn quốc , Nấm linh chi hàn quốc, * [Đạm sâm Hàn Quốc](http://sieuthisamhanquoc.com.vn/nhan-sam-han-quoc/vien-hong-sam-nhung-huou-linh-chi-tot-cho-suc-khoe.html), Đông trùng hạ thảo
**>>> Xem thêm thông tin hữu ích khác** **>>> Xem thêm thông tin hữu ích khác**
## Đánh giá
There are no reviews yet, would you like to submit yours?

WARC-Truncated: length

WARC-Identified-Payload-Type: text/html

Server: LiteSpeed

Accept-Ranges: bytes

Vary: Accept-Encoding

Content-Type: text/html; charset=UTF-8


text:
Danh sách TOP 30 cổ phiếu cổ phiếu khuyến nghị ngày 18/12:
Bộ lọc kỹ thuật của chúng tôi đưa ra danh sách các cổ phiếu khuyến nghị theo dõi hôm nay, gồm 30 mã cổ phiếu có điểm tích lũy, có lực tăng mạnh. Hệ thống đánh giá và đưa ra danh sách các cổ phiếu khuyến nghị có sức mạnh dòng tiền, lực tăng ngắn và trung hạn… Sau đây là bảng danh sách các cổ phiếu khuyến nghị ngày 18/12:
(*) Giải thích các thuật ngữ nằm trong danh sách cổ phiếu khuyến nghị: Đà Tăng: Thể hiện sức bật của cổ phiếu; Tích lũy: CP càng tích lũy lâu thì điểm càng cao; Thanh khoản: Trên 7.5 là thể hiện dòng tiền khá mạnh đang được đẩy vào CP đó; Cơ bản: Trên 5.0 thể hiện cổ phiếu đó là doanh nghiệp cơ bản tăng trưởng có báo cáo tốt; Vốn hóa: Thể hiện mức độ ảnh hưởng của cổ phiếu đến thị trường chung; % từ điểm Wash out: Đầu sóng dưới 5%, Giữa sóng 5-15%, Cuối sóng trên 15%.
Cổ phiếu khuyến nghị mua trong TOP 30 cổ phiếu khuyến nghị ngày 18/12:
– PNJ: Giá khuyến nghị mua tại 126 đến 129 với giá mục tiêu là 141.5 và ngưỡng cắt lỗ tại 122.5.
– GAS: Giá khuyến nghị mua tại 84.5 đến 86 với giá mục tiêu là 110.4 và ngưỡng cắt lỗ tại 82.5.
– HPG: Giá khuyến nghị mua tại 40.6 đến 41 với giá mục tiêu là 45 và ngưỡng cắt lỗ tại 38.5.
– VJC: Giá khuyến nghị mua tại 135 đến 136 với giá mục tiêu là 147 và ngưỡng cắt lỗ tại 124.5.
– REE: Giá khuyến nghị mua tại 39.7 đến 40.3 với giá mục tiêu là 44.8 và ngưỡng cắt lỗ tại 37.5.
– SDI: Giá khuyến nghị mua tại 88 đến 89 với giá mục tiêu là 113 và ngưỡng cắt lỗ tại 84.
– CSV: Giá khuyến nghị mua tại 38 đến 38.7 với giá mục tiêu là 42 và ngưỡng cắt lỗ tại 35.
– VCS: Giá khuyến nghị mua tại 252 đến 254 với giá mục tiêu là 266 và ngưỡng cắt lỗ tại 233.
– NCT: Giá khuyến nghị mua tại 106 đến 108 với giá mục tiêu là 119 và ngưỡng cắt lỗ tại 100.
– MBB: Giá khuyến nghị mua tại 23.5 đến 23.7 với giá mục tiêu là 30 và ngưỡng cắt lỗ tại 22.2.
Các bạn muốn được tư vấn chuyên sâu thị trường chứng khoán, về cổ phiếu tiềm năng, vui lòng nhắn tin tại Fanpage cophieu86, hoặc liên hệ trực tiếp với chúng tôi theo số điện thoại bên dưới để được tư vấn chi tiết.
—————————
Nguyễn Hữu Bình – Nhà quản lý tài khoản chứng khoán
(nhận Hợp tác đầu tư – Quản lý tài khoản chứng khoán)
Điện thoại: 0983 361 688
https://www.facebook.com/cophieu86/
Website: www.cophieu86.com
Tham gia nhóm phân tích cổ phiếu chuyên sâu tại đây.

markdown:
**Danh sách TOP 30 cổ phiếu cổ phiếu khuyến nghị ngày 18/12:**
Bộ lọc kỹ thuật của chúng tôi đưa ra danh sách các
[cổ phiếu](https://cophieu86.com/) khuyến nghị theo dõi hôm nay, gồm 30 mã [cổ phiếu](https://cophieu86.com/) có điểm tích lũy, có lực tăng mạnh. Hệ thống đánh giá và đưa ra danh sách các [cổ phiếu](https://cophieu86.com/) khuyến nghị có sức mạnh dòng tiền, lực tăng ngắn và trung hạn… Sau đây là bảng danh sách các [cổ phiếu](https://cophieu86.com/) khuyến nghị ngày 18/12: **(*) Giải thích các thuật ngữ nằm trong danh sách cổ phiếu khuyến nghị: ** **Đà Tăng:** *Thể hiện sức bật của* [cổ phiếu](https://cophieu86.com/); **Tích lũy:** *CP càng tích lũy lâu thì điểm càng cao;* **Thanh khoản:** *Trên 7.5 là thể hiện dòng tiền khá mạnh đang được đẩy vào CP đó;* **Cơ bản:** *Trên 5.0 thể hiện* [cổ phiếu](https://cophieu86.com/)đó là doanh nghiệp cơ bản tăng trưởng có báo cáo tốt; **Vốn hóa:** *Thể hiện mức độ ảnh hưởng của* [cổ phiếu](https://cophieu86.com/)đến thị trường chung; **% từ điểm Wash out:** *Đầu sóng dưới 5%, Giữa sóng 5-15%, Cuối sóng trên 15%.*
**Cổ phiếu khuyến nghị mua trong TOP 30 ** **cổ phiếu khuyến nghị ngày 18/12** **:** **– PNJ: **Giá khuyến nghị mua tại 126 đến 129 với giá mục tiêu là 141.5 và ngưỡng cắt lỗ tại 122.5. **– GAS: **Giá khuyến nghị mua tại 84.5 đến 86 với giá mục tiêu là 110.4 và ngưỡng cắt lỗ tại 82.5. **– HPG: **Giá khuyến nghị mua tại 40.6 đến 41 với giá mục tiêu là 45 và ngưỡng cắt lỗ tại 38.5. **– VJC: **Giá khuyến nghị mua tại 135 đến 136 với giá mục tiêu là 147 và ngưỡng cắt lỗ tại 124.5. **– REE: **Giá khuyến nghị mua tại 39.7 đến 40.3 với giá mục tiêu là 44.8 và ngưỡng cắt lỗ tại 37.5. **– SDI: **Giá khuyến nghị mua tại 88 đến 89 với giá mục tiêu là 113 và ngưỡng cắt lỗ tại 84. **– CSV: **Giá khuyến nghị mua tại 38 đến 38.7 với giá mục tiêu là 42 và ngưỡng cắt lỗ tại 35. **– VCS: **Giá khuyến nghị mua tại 252 đến 254 với giá mục tiêu là 266 và ngưỡng cắt lỗ tại 233. **– NCT: **Giá khuyến nghị mua tại 106 đến 108 với giá mục tiêu là 119 và ngưỡng cắt lỗ tại 100. **– MBB: **Giá khuyến nghị mua tại 23.5 đến 23.7 với giá mục tiêu là 30 và ngưỡng cắt lỗ tại 22.2.
Các bạn muốn được tư vấn chuyên sâu thị trường chứng khoán, về
[cổ phiếu](https://cophieu86.com/) tiềm năng, vui lòng nhắn tin tại **Fanpage ** [, hoặc liên hệ trực tiếp với chúng tôi theo số điện thoại bên dưới để được tư vấn chi tiết. cophieu86](https://www.facebook.com/cophieu86/)
—————————
**– Nhà quản lý tài khoản chứng khoán
Nguyễn Hữu Bình **
*(nhận* **Hợp tác đầu tư – Quản lý tài khoản**chứng khoán) **Điện thoại:**
**0983 361 688**

Server: Apache

Link: <https://cophieu86.com/wp-json/>; rel="https://api.w.org/", <https://cophieu86.com/?p=5135>; rel=shortlink


text:
Lập trình Cơ sở dữ liệu với C#
Giới thiệu
Với sự phát triển của công nghệ thông tin, ngày nay mọi lĩnh vực đều cố gắng xây dựng các phần mềm quản lý để tiết kiệm chi phí và tăng hiệu quả lao động như các phần mềm quản lý sản phẩm, quản lý bán hàng, quản lý nhân sự, v.v. Làm sao chúng ta có thể lập trình được một ứng dụng sử dụng dữ liệu được lưu trữ ở một hệ quản trị CSDL nào đó ví dụ như Access hoặc SQL Server. Với sự ra đời của .Net, bạn có thể xây dựng những ứng dụng lập trình với CSDL một cách dễ dàng và nhanh chóng. Đây là bài hướng dẫn từng bước cách lập trình với cơ sở dữ liệu sử dụng ngôn ngữ C# và hệ quản trị CSDL SQL Server.
Chuẩn bị trước
- Cài đặt Visual Studio, bạn có thể download phiên bản 2010
- Có kiến thức cơ bản về lập trình CSDL tại đây
- Chuẩn viết code C# tại đây
- Các câu lệnh SQL cơ bản như SELECT, INSERT, UPDATE, DELETE
Yêu cầu bài toán
Thiết kế cơ sở dữ liêu đặt tên QLBanHang, trong đó có bảng:
tblMatHang( MaSP nchar(5), TenSP nvarchar(30), NgaySX Date, NgayHH Date, DonVi nvarchar(10), DonGia Float , GhiChu nvarchar(200))
Thiết kết giao diện:
- Các phần cửa sổ co giãn hợp lý khi của sổ của Form phóng to hoặc thu nhỏ, ví dụ cửa sổ (3) luôn giữ cố định ở bên trái, phần cửa sổ (4) và (5) co giãn khi Form thay đổi kích thước, (1) và (2) luôn nằm trên đầu và phía dưới cùng của Form.
- Các nút có gắn các phím tắt ví dụ như Alt + T cho nút Tìm kiếm, Alt + H cho nút Thêm, v.v.
a) Chức năng Tìm kiếm:
Hỗ trợ các tiêu chí: MaSP, TenSP, NgaySX, NgayHetHan, DonGia
Tiêu đề: TÌM KIẾM MẶT HÀNG
Khi ấn nút Tìm:
- dgvDanhSach sẽ hiển thị tất cả các thông tin về các sản phẩm thoả mãn các tiêu chí lựa chọn.
- Cấm Click vào các nút Sửa, Xoá
- Khi Click vào từng trường, các thông tin sẽ hiển thị chi tiết lên grbChiTiet, nhưng không cho phép sửa đổi dữ liệu. Không hiển thị các nút Lưu, Huỷ trong grbChiTiet.
b) Chức năng Thêm:
Tiêu đề: THÊM MẶT HÀNG
Khi ấn nút Thêm:
- grbChiTiet sẽ xoá trắng và cho phép sửa đổi dữ liệu
- Cấm Click vào các nút Sửa, Xoá.
- Trong grbChiTiet hiển thị 2 nút lệnh Lưu, Huỷ. Khi ấn nút Huỷ, sẽ thoát khỏi chức năng thêm (Xoá trắng grbChiTiet, không cho nhập dữ liệu)
- Nếu Thêm thành công, cập nhật lại dgvDanhSach
c) Chức năng Sửa:
Tiêu đề: CẬP NHẬT MẶT HÀNG
Nút Sửa chỉ cho Enable = True khi người dùng chọn một bản ghi trong dgvDanhSach.
Khi ấn nút Sửa:
- Cấm Click vào các nút Thêm, Xoá.
- grbChiTiet cho phép sửa dữ liệu. Trong grbChiTiet cho hiển thị nút lệnh Lưu, Huỷ bỏ. Khi ấn nút Huỷ, sẽ thoát khỏi chức năng Sửa (cấm Click vào nút Sửa, cho phép Click vào nút Thêm)
- Nếu Cập nhật thành công, cập nhật lại dgvDanhSach
d) Chức năng Xoá:
Tiêu đề: XOÁ MẶT HÀNG
Nút Xoá chỉ cho phép Click khi người dùng chọn một bản ghi trong dgvDanhSach
Khi ấn nút Xoá:
- Cấm Click vào các nút Thêm, Sửa.
- grbChiTiet không cho phép sửa dữ liệu. Trong grbChiTiet cho hiển thị nút lệnh Lưu, Huỷ bỏ. Khi ấn nút Huỷ sẽ thoát khỏi chức năng Xoá (cấm Click vào nút Xoá, cho phép Click vào nút Thêm)
Xây dựng chương trình
- Tạo mới Project
- Kích vào menu Start > All Programs > Microsoft Visual Studio 2010 (tuỳ theo phiên bản bạn cài)
- Rồi trên cửa sổ VS 2010 kích vào menu File > New > Project …
- Chọn ngôn ngữ C# và kiểu ứng dụng bạn lập trình. Trong trường hợp này bạn chọn Windows Form Application
- Giao diện cửa sổ dự án
- Toolbox: chứa các control cho phép chúng ta kéo thả vào giao diện. Trong ứng dụng này chúng ta sẽ sử dụng các control: Label, TextBox, DateTimePicker, Button, Spliter, Panel, GroupBox
- Solution Explorer: chứa toàn bộ tài nguyên dự án như các file code, các thư viện …
- Properties: chứa các thuộc tính, các sự kiện của control và form
- Ngoài ra còn có các cửa sổ khác như Server Explorer, Error List, Output …, nếu không thấy cửa sổ nào bạn có thể vào menu View để chọn.
- Project ban đầu khởi tạo có Form1.cs là form mặc định, bạn có thể kích chuột phải chọn Rename thành frmMatHang và thực hiện thay đổi các thuộc tính nếu cần thiết.
- Tạo cơ sở dữ liệu
Lập trình CSDL với .NET có một chuẩn chung với các nguồn cơ sở dữ liệu khác nhau, nó chỉ khác nhau về .NET Data Provider. Trong bài này chúng ta sẽ sử dụng hệ quản trị CSDL SQL Server được cài mặc định khi cài Visual Studio
- Kích chuột phải vào tên Project trong của sổ Solution Explorer > Add > New Item > Service-based Database
- Bạn ấn nút Next và Finish để kết thúc tạo file. Sau đó bạn nhìn thấy có một file QLBanHang.mdf xuất hiện trong cửa sổ Solution Explorer
- Kích đúp vào file này, bạn nhìn thấy nó xuất hiện cửa sổ Server Explorer, chọn tên Database QLBanHang > Tables > kích chuột phải chọn Add New Table, rồi thực hiện tạo bảng với cấu trúc như trên yêu cầu
- Giao diện sau khi thiết kế
- Thiết kế giao diện và đặt các thuộc tính
- Chú ý để thiết kế được giao diện thân thiện với người dùng và các control tự co giãn khi Form thay đổi kích thước cần thiết kế, chú ý kéo các control đúng thứ tự như sau:
- Giao diện phần (1): là phần nhãn tiêu đề, kéo control Panel vào Form và đặt thuộc tính Dock = Top để cho Panel luôn nằm ở trên đầu của Form, sau đó kéo một Label nằm trên Panel này.
- Giao diện phần (2): là phần các nút Tìm kiếm, Thêm … cũng làm tương tự như phần (1), kéo control Panel và đặt thuộc tính Dock = Bottom để Panel này luôn nằm cuối của Form, sau đó mới đặt các Button nằm trên Panel này.
- Giao diện phần (3): là phần chi tiết, kéo control GroupBox vào Form và đặt thuộc tính Dock = Left, sau đó thiết kế các control cho nhập Mã SP, Tên SP … Sau đó ta kéo thêm control Spliter và đặt thuộc tính Dock = Left để cho phép người dùng thay đổi độ rộng giữa phần (3) với phần (4) và (5).
- Giao diện phần (4): là phần tìm kiếm, kéo control GroupBox vào Form và đặt thuộc tính Dock = Top, lúc này nó sẽ nằm ở trên phần còn lại. Sau đó đặt các control cho phép nhập tìm kiếm như Mã SP, Tên SP … Trong phần này ta cũng kéo control Spliter, đặt thuộc tính Dock = Top để cho phép người sử dụng thay đổi độ rộng giữa phần (4) và phần (5)
- Giao diện phần (5): là phần hiển thị dữ liệu, kéo control GroupBox và đặt thuộc tính Dock = Fill, sau đó kéo control DataGridView nằm trong GroupBox này nó sẽ chiếm toàn bộ phần không gian còn lại.
- Viết chương trình chạy trên Windows thì cần tuân theo chuẩn của Windows, ví dụ khi ấn phím Tab trên bàn phím thì con trỏ sẽ chạy từ bên trên -> sang trái -> xuống dưới -> sang phải. Nếu thứ tự bạn kéo control không đúng thì khi ấn phím Tab sẽ nhảy lung tung. Bạn có thể đặt lại bằng cách vào menu View > Tab Order để đặt lại thứ tự Tab trên các control. Sau khi đặt xong quay lại chọn lại menu View > Tab Order để kết thúc.
- Phần code lập trình cho các chức năng
- Khai báo .Net Data Provider cho SQL Server
using System.Data.SqlClient;
- Khai báo các biến toàn cục nằm ngay dưới class
namespace QLBanHang { public partial class frmMatHang : Form { //Khai báo các biến toàn cục SqlConnection con;//Khai báo đối tượng thực hiện kết nối đến cơ sở dữ liệu SqlCommand cmd;//Khai báo đối tượng thực hiện các câu lệnh truy vấn SqlDataAdapter dap;//Khai báo đối tượng gắn kết DataSource với DataSet DataSet ds;//Đối tượng chứa dữ liệu tại local public frmMatHang() { InitializeComponent(); } } }
- Viết sự kiện Form_Load, xảy ra khi form khởi động lên. Chúng ta thực hiện khởi tạo kết nối và nạp dữ liệu lên DataGridView
private void frmMatHang_Load(object sender, EventArgs e) { //Tạo đối tượng Connection con = new SqlConnection(); //Truyền vào chuỗi kết nối tới cơ sở dữ liệu //Gọi Application.StartupPath để lấy đường dẫn tới thư mục chứa file chạy chương trình con.ConnectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=" + Application.StartupPath + @"\QLBanHang.mdf;Integrated Security=True;User Instance=True"; //Gọi phương thức Load dự liệu LoadDuLieu("Select * from tblMatHang"); //Khi Form mới Load lên thì ẩn các bút Sửa và Xóa btnSua.Enabled = false; btnXoa.Enabled = false; //An groupbox chi tiet HienChiTiet(false); } //Viết một hàm nạp dữ liệu lên DataGrid private void LoadDuLieu(String sql) { //tạo đối tượng DataSet ds = new DataSet(); //Khởi tạo đối tượng DataAdapter và cung cấp vào câu lệnh SQL và đối tượng Connection dap = new SqlDataAdapter(sql,con); //Dùng phương thức Fill của DataAdapter để đổ dữ liệu từ DataSource tới DataSet dap.Fill(ds); //Gắn dữ liệu từ DataSet lên DataGridView dgvKetQua.DataSource = ds.Tables[0]; } //Phương thức ẩn hiện các control ở groupbox chi tiết private void HienChiTiet(Boolean hien) { txtMaSP.Enabled = hien; txtTenSP.Enabled = hien; dtpNgayHH.Enabled = hien; dtpNgaySX.Enabled = hien; txtDonVi.Enabled = hien; txtDonGia.Enabled = hien; txtGhiChu.Enabled = hien; //Ẩn hiện 2 nút Lưu và Hủy btnLuu.Enabled = hien; btnHuy.Enabled = hien; }
- Chức năng tìm kiếm, sử dụng sự kiện Click của nút Tìm kiếm
//Chức năng tìm kiếm private void btnTimKiem_Click(object sender, EventArgs e) { //Cập nhật trên nhãn tiêu đề lblTieuDe.Text = "TÌM KIẾM MẶT HÀNG"; //Cấm nút Sửa và Xóa btnSua.Enabled = false; btnXoa.Enabled = false; //Viet cau lenh SQL cho tim kiem String sql = "SELECT * FROM tblMatHang"; String dk = ""; //Tim theo MaSP khac rong if (txtTKMaSP.Text.Trim() != "") { dk += " MaSP like '%" + txtTKMaSP.Text + "%'"; } //kiem tra TenSP va MaSP khac rong if (txtTKTenSP.Text.Trim() != "" && dk != "") { dk += " AND TenSP like N'%" + txtTKTenSP.Text + "%'"; } //Tim kiem theo TenSP khi MaSP la rong if (txtTKTenSP.Text.Trim() != "" && dk == "") { dk += " TenSP like N'%" + txtTKTenSP.Text + "%'"; } //Ket hoi dk if (dk != "") { sql += " WHERE" + dk; } //Goi phương thức Load dữ liệu kết hợp điều kiện tìm kiếm LoadDuLieu(sql); }
- Chức năng Thêm, sử dụng sự kiện Click của nút Thêm
//Sự kiện thêm mới mặt hàng private void btnThem_Click(object sender, EventArgs e) { lblTieuDe.Text = "THÊM MẶT HÀNG"; //Xoa trang GroupBox chi tiết sản phẩm XoaTrangChiTiet(); //Cam nut sua xoa btnSua.Enabled = false; btnXoa.Enabled = false; //Hiện GroupBox Chi tiết HienChiTiet(true); }
- Chức năng Sửa xảy ra khi chọn một bản ghi trên DataGridView. Kích đúp vàp DataGridView, VS sẽ phát sinh tự động sự kiện CellContentClick. Chúng ta lấy giá trị hàng hiện tại thông qua tham số của sự kiện DataGridViewCellEventArgs e trả về qua thuộc tính RowIndex. Sau đó ta viết sự kiện Click của nút Sửa
//Sư kiện khi người dùng chọn một hàng trên DataGridView private void dgvKetQua_CellContentClick(object sender, DataGridViewCellEventArgs e) { //Hien thi nut sua btnSua.Enabled = true; btnXoa.Enabled = true; btnThem.Enabled = false; //Bắt lỗi khi người sử dụng kích linh tinh lên datagrid try { txtMaSP.Text = dgvKetQua[0, e.RowIndex].Value.ToString(); txtTenSP.Text = dgvKetQua[1, e.RowIndex].Value.ToString(); dtpNgaySX.Value = (DateTime)dgvKetQua[2, e.RowIndex].Value; dtpNgayHH.Value = (DateTime)dgvKetQua[3, e.RowIndex].Value; txtDonVi.Text = dgvKetQua[4, e.RowIndex].Value.ToString(); txtDonGia.Text = dgvKetQua[5, e.RowIndex].Value.ToString(); txtGhiChu.Text = dgvKetQua[6, e.RowIndex].Value.ToString(); } catch (Exception ex) { } } //Sự kiện Click của nút sửa private void btnSua_Click(object sender, EventArgs e) { //Cập nhật tiêu đề lblTieuDe.Text = "CẬP NHẬT MẶ HÀNG"; //Ẩn hai nút Thêm và Sửa btnThem.Enabled = false; btnXoa.Enabled = false; //Hiện gropbox chi tiết HienChiTiet(true); }
- Chức năng Xoá xảy ra khi chọn một bản ghi trên DataGridView. Chúng ta vẫn sử dụng lại sự kiện ở CellContentClick của DataGridView ở phía trên. Sau đó ta viết sự kiện Click của nút Xoá
//Sự kiện Click của nút Xóa private void btnXoa_Click(object sender, EventArgs e) { //Bật Message Box cảnh báo người sử dụng if (MessageBox.Show("Bạn có chắc chắn xóa mã mặt hàng " + txtMaSP.Text + " không? Nếu có ấn nút Lưu, không thì ấn nút Hủy", "Xóa sản phẩm", MessageBoxButtons.YesNo) == DialogResult.Yes) { lblTieuDe.Text = "XÓA MẶT HÀNG"; btnThem.Enabled = false; btnSua.Enabled = false; //Hiện gropbox chi tiết HienChiTiet(true); } }
- Chức năng Lưu, chúng ta dựa vào trạng thái Enable của các nút Thêm, Sửa hoặc Xoá để xác nhận trạng thái thực thi câu lệnh SQL
//Sự kiện click vào button Lưu private void btnLuu_Click(object sender, EventArgs e) { string sql = ""; //Kiếm tra nếu kết nối chưa mở thì thực hiện mở kết nối if (con.State != ConnectionState.Open) con.Open(); //Chúng ta sử dụng control ErrorProvider để hiển thị lỗi //Kiểm tra tên sản phầm có bị để trống không if (txtTenSP.Text.Trim() == "") { errChiTiet.SetError(txtTenSP, "Bạn không để trống tên sản phẩm!"); return; } else { errChiTiet.Clear(); } //Kiểm tra ngày sản xuất, lỗi nếu người sử dụng nhập vào ngày sản xuất lớn hơn ngày hiện tại if (dtpNgaySX.Value > DateTime.Now) { errChiTiet.SetError(dtpNgaySX, "Ngày sản xuất không hợp lệ!"); return; } else { errChiTiet.Clear(); } //Kiểm tra ngày hết hạn xem có lớn hơn ngày sản xuất không if (dtpNgayHH.Value < dtpNgaySX.Value) { errChiTiet.SetError(dtpNgayHH, "Ngay hết hạn nhỏ hơn ngày sản xuất!"); return; } else { errChiTiet.Clear(); } //Kiểm tra đơn vị xem có để trống không if (txtDonVi.Text.Trim() == "") { errChiTiet.SetError(txtDonVi, "Bạn không để trống đơn vi!"); return; } else { errChiTiet.Clear(); } //Kiểm tra đơn giá if (txtDonGia.Text.Trim() == "") { errChiTiet.SetError(txtDonGia, "Bạn không để trống đơn giá!"); return; } else { errChiTiet.Clear(); } //Nếu nút Thêm enable thì thực hiện thêm mới //Dùng ký tự N' trước mỗi giá trị kiểu text để insert giá trị có dấu tiếng việt vào CSDL được đúng if (btnThem.Enabled == true) { //Kiểm tra xem ô nhập MaSP có bị trống không if (txtMaSP.Text.Trim() == "") { errChiTiet.SetError(txtMaSP, "Bạn không để trống mã sản phẩm trường này!"); return; } else { //Kiểm tra xem mã sản phẩm đã tồn tại chưa đẻ tránh việc insert mới bị lỗi sql = "Select Count(*) From tblMatHang Where MaSP ='" + txtMaSP.Text + "'"; cmd = new SqlCommand(sql, con); int val = (int)cmd.ExecuteScalar(); if (val > 0) { errChiTiet.SetError(txtMaSP, "Mã sản phẩm trùng trong cơ sở dữ liệu"); return; } errChiTiet.Clear(); } //Insert vao CSDL sql = "INSERT INTO tblMatHang(MaSP,TenSP,NgaySX,NgayHH,DonVi,DonGia,GhiChu)VALUES ("; sql += "N'" + txtMaSP.Text + "',N'" + txtTenSP.Text + "','" + dtpNgaySX.Value.Date + "','" + dtpNgayHH.Value.Date + "',N'" + txtDonVi.Text + "',N'" + txtDonGia.Text + "',N'" + txtGhiChu.Text + "')"; } //Nếu nút Sửa enable thì thực hiện cập nhật dữ liệu if (btnSua.Enabled == true) { sql = "Update tblMatHang SET "; sql += "TenSP = N'" + txtTenSP.Text + "',"; sql += "NgaySX = '" + dtpNgaySX.Value.Date + "',"; sql += "NgayHH = '" + dtpNgayHH.Value.Date + "',"; sql += "DonVi = N'" + txtDonVi.Text + "',"; sql += "DonGia = '" + txtDonGia.Text + "',"; sql += "GhiChu = N'" + txtGhiChu.Text + "' "; sql += "Where MaSP = N'" + txtMaSP.Text + "'"; } //Nếu nút Xóa enable thì thực hiện xóa dữ liệu if (btnXoa.Enabled == true) { sql = "Delete From tblMatHang Where MaSP =N'" + txtMaSP.Text + "'"; } //Thuc thi cau lenh sql cmd = new SqlCommand(sql, con); cmd.ExecuteNonQuery(); //Cap nhat lai DataGrid sql = "Select * from tblMatHang"; LoadDuLieu(sql); //dong ket noi con.Close(); //Ẩn hiện các nút phù hợp chức năng HienChiTiet(false); btnSua.Enabled = false; btnXoa.Enabled = false; }
- Kích vào nút Huỷ để huỷ bỏ công việc đang làm
//Click vào nút Hủy private void btnHuy_Click(object sender, EventArgs e) { //Thiết lập lại các nút như ban đầu btnXoa.Enabled = false; btnSua.Enabled = false; btnThem.Enabled = true; //xoa trang XoaTrangChiTiet(); //Cam nhap HienChiTiet(false); }
- Kích vào nút Thoát
private void btnThoat_Click(object sender, EventArgs e) { //Đóng form this.Close(); }
Bạn có thể download mã nguồn toàn bộ chương trình
- Chú ý:
- Khi bạn download mã nguồn về, cần chỉnh sửa đường dẫn đến nơi đặt CSDL của bạn. Đây là source code demo, nên tôi để hardcode chuỗi kết nối. Để xây dựng ứng dụng chuyên nghiệp, bạn nêu lưu chữ chuỗi kết nối trong file app.config để tiện thay đổi khi đi triển khai sản phẩm.
- Để nhập dữ liệu văn bản có dấu tiếng việt vào trong CSDL từ giao diện phần mềm, bạn cần thêm ký tự N trước giá trị của mỗi trường trong câu lệnh SQL, như ví dụ trên câu lệnh Insert, tôi đã thêm cho các trường MaSP, TenSP, DonVi, GhiChu.
Thầy chưa viết Hienchitiet() ạ?
Cảm ơne em. Mình cũng đã cung cấp code để các em xem chi tiết. Mình cũng đã cập nhật trên bài viết rồi nhé!
thưa thầy !!!! không có phần report ak ???
Phần report em có thể xem ở đây: http://timoday.edu.vn/tao-bao-cao-dung-control-reportviewer/
em xài visual 2010 nhưng không thể Solution Explorer > Add > New Item > Service-based Database được ! Mong thầy giúp đỡ !
Em có thể cần cài thêm SQL Server 2008 R2 Express theo link sau: https://www.microsoft.com/en-us/download/details.aspx?id=30438
cám ơn thầy ! cho em hỏi thêm nếu nhập vào trùng ID thì số lượng(mặt hàng) của ID đó sẽ cộng thêm, các lệnh như sum, count được viết thế nào ạ ?
Chào em, để làm được như em thì cần kiểm tra xem ID đó đã tồn tại trong CSDL chưa, nếu tồn tại rồi thì em dùng câu lệnh Update để cộng thêm số lượng vào đúng ID đó.
Câu lệnh để kiểm tra: SELECT COUNT(*) FROM ten_bang WHERE ID = id_cua_em.
Nếu có bản ghi thì giá trị trả về sẽ > 0, chứng tỏ ID đó đã tồn tại.
Sau đó em lấy tổng số lượng hiện tại: SELECT SoLuong FROM ten_bang WHERE ID = id_cua_em
Sau cùng dùng câu lệnh Update: UPDATE ten_bang SET SoLuong = so_luong_cu + sl WHERE ID = id_cua_em
tại sao em copy qua máy khác đã cài sql server luôn mà vẫn báo lỗi dữ liệu ,có cách nào để đem qua máy khác để sử dụng không .
EM cám ơn
Em chú ý, khi em copy đi sang máy khác nếu máy của họ cài SQL Server đặt tên khác thì em chạy sẽ bị lỗi.
Giải pháp em có thể lưu chuỗi kết nối trong file config, rồi khi em copy đến máy khác hoặc em triển khai phần mềm đến máy khác em chỉ cần thay đổi cấu hình trong file này là chương trình sẽ chạy, em không cần phải biên dịch lại code nữa.
Dạ em đả làm được rồi ạ ,Em cám ơn nhiều
Bạn cho mình hỏi lưu trong lưu chuỗi kết nối trong file config là làm như thế nào không mình đang cần
Bạn tham khảo bài này có hướng dẫn cách lưu trữ chuỗi kết nối trong file config nhé: https://timoday.edu.vn/phan-4-lap-trinh-co-so-du-lieu-voi-c/#muc6
Cho em hỏi với ạ. Tại sao chọn form khởi động là frmMain mà vẫn không được. Khi nhấn F5 thì vẫn là form khác ạ.
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new frmMain());
}
Em kiểm tra lại xem biên dịch có bị lỗi gì không? Nếu biên dịch lỗi mà em vẫn cứ chạy thì nó sẽ chạy file biên dịch cũ trước đây.
ko có hàm xoatrangchitiet() ạ
Hàm này đơn giản em. Em có thể viết thêm thủ tục trong code của form chính rồi gọi nó:
private void XoaTrangChiTiet()
{
txtMaSP.Text = “”;
txtTenSP.Text = “”;
dtpNgaySX.Value = DateTime.Now;
…..
}

markdown:
# Lập trình Cơ sở dữ liệu với C#
### Giới thiệu
Với sự phát triển của công nghệ thông tin, ngày nay mọi lĩnh vực đều cố gắng xây dựng các phần mềm quản lý để tiết kiệm chi phí và tăng hiệu quả lao động như các phần mềm quản lý sản phẩm, quản lý bán hàng, quản lý nhân sự, v.v. Làm sao chúng ta có thể lập trình được một ứng dụng sử dụng dữ liệu được lưu trữ ở một hệ quản trị CSDL nào đó ví dụ như Access hoặc SQL Server. Với sự ra đời của .Net, bạn có thể xây dựng những ứng dụng lập trình với CSDL một cách dễ dàng và nhanh chóng. Đây là bài hướng dẫn từng bước cách lập trình với cơ sở dữ liệu sử dụng ngôn ngữ C# và hệ quản trị CSDL SQL Server.
### Chuẩn bị trước
- Cài đặt Visual Studio, bạn có thể download
[phiên bản 2010](https://www.fshare.vn/file/TTZV6KWVZT)
- Có kiến thức cơ bản về lập trình CSDL
[tại đây](http://timoday.edu.vn/wp-content/uploads/2016/01/C5-ADO.Net-trong-C.pdf)
- Chuẩn viết code C#
[tại đây](http://timoday.edu.vn/chuan-viet-code-trong-c/)
- Các câu lệnh SQL cơ bản như SELECT, INSERT, UPDATE, DELETE
### Yêu cầu bài toán
Thiết kế cơ sở dữ liêu đặt tên
**QLBanHang**, trong đó có bảng: **tblMatHang (** ** __MaSP__nchar(5), TenSP nvarchar(30), NgaySX Date, NgayHH Date, DonVi nvarchar(10), DonGia Float , GhiChu nvarchar(200) **)**
Thiết kết giao diện:
- Các phần cửa sổ co giãn hợp lý khi của sổ của Form phóng to hoặc thu nhỏ, ví dụ cửa sổ
**(3)**luôn giữ cố định ở bên trái, phần cửa sổ **(4)**và **(5)**co giãn khi Form thay đổi kích thước, **(1)**và **(2)**luôn nằm trên đầu và phía dưới cùng của Form.
- Các nút có gắn các phím tắt ví dụ như
**Alt + T**cho nút **Tìm kiếm**, **Alt + H**cho nút **Thêm**, v.v.
**a) Chức năng Tìm kiếm: **
Hỗ trợ các tiêu chí: MaSP, TenSP, NgaySX, NgayHetHan, DonGia
Tiêu đề: TÌM KIẾM MẶT HÀNG
Khi ấn nút Tìm:
**dgvDanhSach**sẽ hiển thị tất cả các thông tin về các sản phẩm thoả mãn các tiêu chí lựa chọn.
- Cấm Click vào các nút
**Sửa**, **Xoá**
- Khi Click vào từng trường, các thông tin sẽ hiển thị chi tiết lên
**grbChiTiet**, nhưng không cho phép sửa đổi dữ liệu. Không hiển thị các nút **Lưu**, **Huỷ**trong **grbChiTiet**. **b) Chức năng Thêm: **
Tiêu đề: THÊM MẶT HÀNG
Khi ấn nút Thêm:
**grbChiTiet**sẽ xoá trắng và cho phép sửa đổi dữ liệu
- Cấm Click vào các nút
**Sửa**, **Xoá**.
- Trong
**grbChiTiet**hiển thị 2 nút lệnh **Lưu**, **Huỷ**. Khi ấn nút **Huỷ**, sẽ thoát khỏi chức năng thêm (Xoá trắng **grbChiTiet**, không cho nhập dữ liệu)
- Nếu Thêm thành công, cập nhật lại
**dgvDanhSach** **c) Chức năng Sửa:**
Tiêu đề: CẬP NHẬT MẶT HÀNG
Nút
**Sửa** chỉ cho *Enable = True* khi người dùng chọn một bản ghi trong **dgvDanhSach**.
Khi ấn nút Sửa:
- Cấm Click vào các nút
**Thêm**, **Xoá**. **grbChiTiet**cho phép sửa dữ liệu. Trong **grbChiTiet**cho hiển thị nút lệnh **Lưu**, **Huỷ bỏ**. Khi ấn nút **Huỷ**, sẽ thoát khỏi chức năng **Sửa**(cấm Click vào nút **Sửa**, cho phép Click vào nút **Thêm**)
- Nếu Cập nhật thành công, cập nhật lại
**dgvDanhSach** **d) Chức năng Xoá: **
Tiêu đề: XOÁ MẶT HÀNG
Nút
**Xoá** chỉ cho phép Click khi người dùng chọn một bản ghi trong **dgvDanhSach**
Khi ấn nút
**Xoá**:
- Cấm Click vào các nút
**Thêm**, **Sửa**. **grbChiTiet**không cho phép sửa dữ liệu. Trong **grbChiTiet**cho hiển thị nút lệnh **Lưu**, **Huỷ bỏ**. Khi ấn nút **Huỷ**sẽ thoát khỏi chức năng **Xoá**(cấm Click vào nút **Xoá**, cho phép Click vào nút **Thêm**)
### Xây dựng chương trình
**Tạo mới Project**
- Kích vào menu
*(tuỳ theo phiên bản bạn cài)* **Start > All Programs > Microsoft Visual Studio 2010**
- Rồi trên cửa sổ VS 2010 kích vào menu
**File > New > Project …**
- Chọn ngôn ngữ
*và kiểu ứng dụng bạn lập trình. Trong trường hợp này bạn chọn* **C#** **Windows Form Application**
- Giao diện cửa sổ dự án
**Toolbox**: chứa các control cho phép chúng ta kéo thả vào giao diện. Trong ứng dụng này chúng ta sẽ sử dụng các control: Label, TextBox, DateTimePicker, Button, Spliter, Panel, GroupBox **Solution Explorer**: chứa toàn bộ tài nguyên dự án như các file code, các thư viện … **Properties**: chứa các thuộc tính, các sự kiện của control và form
- Ngoài ra còn có các cửa sổ khác như
**Server Explorer**, **Error List**, **Output**…, nếu không thấy cửa sổ nào bạn có thể vào menu **View**để chọn.
- Project ban đầu khởi tạo có
*là form mặc định, bạn có thể kích chuột phải chọn* **Form1.cs** **Rename**thành **frmMatHang**và thực hiện thay đổi các thuộc tính nếu cần thiết.
-
**Tạo cơ sở dữ liệu**
Lập trình CSDL với .NET có một chuẩn chung với các nguồn cơ sở dữ liệu khác nhau, nó chỉ khác nhau về
**.NET Data Provider**. Trong bài này chúng ta sẽ sử dụng hệ quản trị CSDL SQL Server được cài mặc định khi cài Visual Studio
- Kích chuột phải vào tên Project trong của sổ
**Solution Explorer > Add > New Item > Service-based Database**
- Bạn ấn nút
**Next**và **Finish**để kết thúc tạo file. Sau đó bạn nhìn thấy có một file **QLBanHang.mdf**xuất hiện trong cửa sổ **Solution Explorer**
- Kích đúp vào file này, bạn nhìn thấy nó xuất hiện cửa sổ
**Server Explorer**, chọn tên Database **QLBanHang**> **Tables**> kích chuột phải chọn **Add New Table,**rồi thực hiện tạo bảng với cấu trúc như trên yêu cầu **Giao diện sau khi thiết kế** **Thiết kế giao diện và đặt các thuộc tính**
|Phần giao diện||Loại control||Các thuộc tính|
|Cửa sổ chính||Form||Name = frmMatHang
|
Text = Quản lý sản phẩm
|ErrorProvider||Name = errChiTiet|
|(1)||Panel||Dock = Top|
|Label||Name = lblTieuDe|
|(2)||Panel||Dock = Bottom|
|Button||Name = btnTimKiem
|
Text = &Tìm kiếm
|Button||Name = btnThem
|
Text = T&hêm
|Button||Name = btnSua
|
Text = &Sửa
|Button||Name = btnXoa
|
Text = &Xoá
|Button||Name = btnThoat
|
Text = Th&oát
|Button||Name = btnTimKiem
|
Text = &Tìm kiếm
|(3)||GroupBox||Dock = Left
|
Text = Chi tiết
|Spliter||Dock = Left|
|Label||Text = Mã SP:|
|TextBox||Name = txtMaSP|
|Label||Text = Tên SP:|
|TextBox||Name = txtTenSP|
|Label||Text = Ngày SX:|
|DateTimePicker||Name = dtpNgaySX
|
Format=Short
|Label||Text = Ngày HH:|
|DateTimePicker||Name = dtpNgayHH
|
Format=Short
|Label||Text = Đơn vị:|
|TextBox||Name = txtDonVi|
|Label||Text = Đơn giá:|
|TextBox||Name = txtDonGia
|
TextAlign = Right
|Label||Text = Ghi chú:|
|TextBox||Name = txtGhiChu
|
Multiline = True
|Button||Name = btnLuu
|
Text = &Lưu
|Button||Name = btnHuy
|
Text = &Huỷ
|(4)||GroupBox||Text = Tìm kiếm
|
Dock = Top
|Spliter||Dock = Top|
|Label||Text = Mã SP:|
|TextBox||Name = txtTKMaSP|
|Label||Text = Tên SP:|
|TextBox||Name = txtTKTenSP|
|(5)||GroupBox||Text = Kết quả
|
Dock = Fill
|DataGridView||Name = dgvKetQua|**Chú ý**để thiết kế được giao diện thân thiện với người dùng và các control tự co giãn khi Form thay đổi kích thước cần thiết kế, chú ý kéo các control đúng thứ tự như sau:
- Giao diện phần
**(1)**: là phần nhãn tiêu đề, kéo control **Panel**vào Form và đặt thuộc tính **Dock = Top**để cho **Panel**luôn nằm ở trên đầu của Form, sau đó kéo một **Label**nằm trên **Panel**này.
- Giao diện phần
**(2)**: là phần các nút Tìm kiếm, Thêm … cũng làm tương tự như phần **(1)**, kéo control **Panel**và đặt thuộc tính **Dock = Bottom**để Panel này luôn nằm cuối của Form, sau đó mới đặt các **Button**nằm trên Panel này.
- Giao diện phần
**(3)**: là phần chi tiết, kéo control **GroupBox**vào Form và đặt thuộc tính **Dock = Left**, sau đó thiết kế các control cho nhập Mã SP, Tên SP … Sau đó ta kéo thêm control **Spliter**và đặt thuộc tính **Dock = Left**để cho phép người dùng thay đổi độ rộng giữa phần **(3)**với phần **(4)**và **(5)**.
- Giao diện phần
**(4)**: là phần tìm kiếm, kéo control **GroupBox**vào Form và đặt thuộc tính **Dock = Top**, lúc này nó sẽ nằm ở trên phần còn lại. Sau đó đặt các control cho phép nhập tìm kiếm như Mã SP, Tên SP … Trong phần này ta cũng kéo control **Spliter**, đặt thuộc tính **Dock = Top**để cho phép người sử dụng thay đổi độ rộng giữa phần **(4)**và phần **(5)**
- Giao diện phần
**(5)**: là phần hiển thị dữ liệu, kéo control **GroupBox**và đặt thuộc tính **Dock = Fill,**sau đó kéo control **DataGridView**nằm trong GroupBox này nó sẽ chiếm toàn bộ phần không gian còn lại.
- Viết chương trình chạy trên Windows thì cần tuân theo chuẩn của Windows, ví dụ khi ấn phím
**Tab**trên bàn phím thì con trỏ sẽ chạy từ *bên trên -> sang trái -> xuống dưới -> sang phải*. Nếu thứ tự bạn kéo control không đúng thì khi ấn phím **Tab**sẽ nhảy lung tung. Bạn có thể đặt lại bằng cách vào menu **View > Tab Order**để đặt lại thứ tự Tab trên các control. Sau khi đặt xong quay lại chọn lại menu **View > Tab Order**để kết thúc.
- Giao diện phần
**Phần code lập trình cho các chức năng**
- Khai báo
**.Net Data Provider**cho SQL Server
using System.Data.SqlClient;
- Khai báo các biến toàn cục nằm ngay dưới class
namespace QLBanHang { public partial class frmMatHang : Form { //Khai báo các biến toàn cục SqlConnection con;//Khai báo đối tượng thực hiện kết nối đến cơ sở dữ liệu SqlCommand cmd;//Khai báo đối tượng thực hiện các câu lệnh truy vấn SqlDataAdapter dap;//Khai báo đối tượng gắn kết DataSource với DataSet DataSet ds;//Đối tượng chứa dữ liệu tại local public frmMatHang() { InitializeComponent(); } } }
- Viết sự kiện Form_Load, xảy ra khi form khởi động lên. Chúng ta thực hiện khởi tạo kết nối và nạp dữ liệu lên
**DataGridView**
private void frmMatHang_Load(object sender, EventArgs e) { //Tạo đối tượng Connection con = new SqlConnection(); //Truyền vào chuỗi kết nối tới cơ sở dữ liệu //Gọi Application.StartupPath để lấy đường dẫn tới thư mục chứa file chạy chương trình con.ConnectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=" + Application.StartupPath + @"\QLBanHang.mdf;Integrated Security=True;User Instance=True"; //Gọi phương thức Load dự liệu LoadDuLieu("Select * from tblMatHang"); //Khi Form mới Load lên thì ẩn các bút Sửa và Xóa btnSua.Enabled = false; btnXoa.Enabled = false; //An groupbox chi tiet HienChiTiet(false); } //Viết một hàm nạp dữ liệu lên DataGrid private void LoadDuLieu(String sql) { //tạo đối tượng DataSet ds = new DataSet(); //Khởi tạo đối tượng DataAdapter và cung cấp vào câu lệnh SQL và đối tượng Connection dap = new SqlDataAdapter(sql,con); //Dùng phương thức Fill của DataAdapter để đổ dữ liệu từ DataSource tới DataSet dap.Fill(ds); //Gắn dữ liệu từ DataSet lên DataGridView dgvKetQua.DataSource = ds.Tables[0]; } //Phương thức ẩn hiện các control ở groupbox chi tiết private void HienChiTiet(Boolean hien) { txtMaSP.Enabled = hien; txtTenSP.Enabled = hien; dtpNgayHH.Enabled = hien; dtpNgaySX.Enabled = hien; txtDonVi.Enabled = hien; txtDonGia.Enabled = hien; txtGhiChu.Enabled = hien; //Ẩn hiện 2 nút Lưu và Hủy btnLuu.Enabled = hien; btnHuy.Enabled = hien; }
- Chức năng tìm kiếm, sử dụng sự kiện
**Click**của nút **Tìm kiếm**
//Chức năng tìm kiếm private void btnTimKiem_Click(object sender, EventArgs e) { //Cập nhật trên nhãn tiêu đề lblTieuDe.Text = "TÌM KIẾM MẶT HÀNG"; //Cấm nút Sửa và Xóa btnSua.Enabled = false; btnXoa.Enabled = false; //Viet cau lenh SQL cho tim kiem String sql = "SELECT * FROM tblMatHang"; String dk = ""; //Tim theo MaSP khac rong if (txtTKMaSP.Text.Trim() != "") { dk += " MaSP like '%" + txtTKMaSP.Text + "%'"; } //kiem tra TenSP va MaSP khac rong if (txtTKTenSP.Text.Trim() != "" && dk != "") { dk += " AND TenSP like N'%" + txtTKTenSP.Text + "%'"; } //Tim kiem theo TenSP khi MaSP la rong if (txtTKTenSP.Text.Trim() != "" && dk == "") { dk += " TenSP like N'%" + txtTKTenSP.Text + "%'"; } //Ket hoi dk if (dk != "") { sql += " WHERE" + dk; } //Goi phương thức Load dữ liệu kết hợp điều kiện tìm kiếm LoadDuLieu(sql); }
- Chức năng Thêm, sử dụng sự kiện
**Click**của nút **Thêm**
//Sự kiện thêm mới mặt hàng private void btnThem_Click(object sender, EventArgs e) { lblTieuDe.Text = "THÊM MẶT HÀNG"; //Xoa trang GroupBox chi tiết sản phẩm XoaTrangChiTiet(); //Cam nut sua xoa btnSua.Enabled = false; btnXoa.Enabled = false; //Hiện GroupBox Chi tiết HienChiTiet(true); }
- Chức năng Sửa xảy ra khi chọn một bản ghi trên DataGridView. Kích đúp vàp DataGridView, VS sẽ phát sinh tự động sự kiện
**CellContentClick**. Chúng ta lấy giá trị hàng hiện tại thông qua tham số của sự kiện *DataGridViewCellEventArgs e*trả về qua thuộc tính *RowIndex*. Sau đó ta viết sự kiện **Click**của nút **Sửa**
//Sư kiện khi người dùng chọn một hàng trên DataGridView private void dgvKetQua_CellContentClick(object sender, DataGridViewCellEventArgs e) { //Hien thi nut sua btnSua.Enabled = true; btnXoa.Enabled = true; btnThem.Enabled = false; //Bắt lỗi khi người sử dụng kích linh tinh lên datagrid try { txtMaSP.Text = dgvKetQua[0, e.RowIndex].Value.ToString(); txtTenSP.Text = dgvKetQua[1, e.RowIndex].Value.ToString(); dtpNgaySX.Value = (DateTime)dgvKetQua[2, e.RowIndex].Value; dtpNgayHH.Value = (DateTime)dgvKetQua[3, e.RowIndex].Value; txtDonVi.Text = dgvKetQua[4, e.RowIndex].Value.ToString(); txtDonGia.Text = dgvKetQua[5, e.RowIndex].Value.ToString(); txtGhiChu.Text = dgvKetQua[6, e.RowIndex].Value.ToString(); } catch (Exception ex) { } } //Sự kiện Click của nút sửa private void btnSua_Click(object sender, EventArgs e) { //Cập nhật tiêu đề lblTieuDe.Text = "CẬP NHẬT MẶ HÀNG"; //Ẩn hai nút Thêm và Sửa btnThem.Enabled = false; btnXoa.Enabled = false; //Hiện gropbox chi tiết HienChiTiet(true); }
- Chức năng Xoá xảy ra khi chọn một bản ghi trên DataGridView. Chúng ta vẫn sử dụng lại sự kiện ở
**CellContentClick**của DataGridView ở phía trên. Sau đó ta viết sự kiện **Click**của nút **Xoá**
//Sự kiện Click của nút Xóa private void btnXoa_Click(object sender, EventArgs e) { //Bật Message Box cảnh báo người sử dụng if (MessageBox.Show("Bạn có chắc chắn xóa mã mặt hàng " + txtMaSP.Text + " không? Nếu có ấn nút Lưu, không thì ấn nút Hủy", "Xóa sản phẩm", MessageBoxButtons.YesNo) == DialogResult.Yes) { lblTieuDe.Text = "XÓA MẶT HÀNG"; btnThem.Enabled = false; btnSua.Enabled = false; //Hiện gropbox chi tiết HienChiTiet(true); } }
- Chức năng Lưu, chúng ta dựa vào trạng thái Enable của các nút Thêm, Sửa hoặc Xoá để xác nhận trạng thái thực thi câu lệnh SQL
//Sự kiện click vào button Lưu private void btnLuu_Click(object sender, EventArgs e) { string sql = ""; //Kiếm tra nếu kết nối chưa mở thì thực hiện mở kết nối if (con.State != ConnectionState.Open) con.Open(); //Chúng ta sử dụng control ErrorProvider để hiển thị lỗi //Kiểm tra tên sản phầm có bị để trống không if (txtTenSP.Text.Trim() == "") { errChiTiet.SetError(txtTenSP, "Bạn không để trống tên sản phẩm!"); return; } else { errChiTiet.Clear(); } //Kiểm tra ngày sản xuất, lỗi nếu người sử dụng nhập vào ngày sản xuất lớn hơn ngày hiện tại if (dtpNgaySX.Value > DateTime.Now) { errChiTiet.SetError(dtpNgaySX, "Ngày sản xuất không hợp lệ!"); return; } else { errChiTiet.Clear(); } //Kiểm tra ngày hết hạn xem có lớn hơn ngày sản xuất không if (dtpNgayHH.Value < dtpNgaySX.Value) { errChiTiet.SetError(dtpNgayHH, "Ngay hết hạn nhỏ hơn ngày sản xuất!"); return; } else { errChiTiet.Clear(); } //Kiểm tra đơn vị xem có để trống không if (txtDonVi.Text.Trim() == "") { errChiTiet.SetError(txtDonVi, "Bạn không để trống đơn vi!"); return; } else { errChiTiet.Clear(); } //Kiểm tra đơn giá if (txtDonGia.Text.Trim() == "") { errChiTiet.SetError(txtDonGia, "Bạn không để trống đơn giá!"); return; } else { errChiTiet.Clear(); } //Nếu nút Thêm enable thì thực hiện thêm mới //Dùng ký tự N' trước mỗi giá trị kiểu text để insert giá trị có dấu tiếng việt vào CSDL được đúng if (btnThem.Enabled == true) { //Kiểm tra xem ô nhập MaSP có bị trống không if (txtMaSP.Text.Trim() == "") { errChiTiet.SetError(txtMaSP, "Bạn không để trống mã sản phẩm trường này!"); return; } else { //Kiểm tra xem mã sản phẩm đã tồn tại chưa đẻ tránh việc insert mới bị lỗi sql = "Select Count(*) From tblMatHang Where MaSP ='" + txtMaSP.Text + "'"; cmd = new SqlCommand(sql, con); int val = (int)cmd.ExecuteScalar(); if (val > 0) { errChiTiet.SetError(txtMaSP, "Mã sản phẩm trùng trong cơ sở dữ liệu"); return; } errChiTiet.Clear(); } //Insert vao CSDL sql = "INSERT INTO tblMatHang(MaSP,TenSP,NgaySX,NgayHH,DonVi,DonGia,GhiChu)VALUES ("; sql += "N'" + txtMaSP.Text + "',N'" + txtTenSP.Text + "','" + dtpNgaySX.Value.Date + "','" + dtpNgayHH.Value.Date + "',N'" + txtDonVi.Text + "',N'" + txtDonGia.Text + "',N'" + txtGhiChu.Text + "')"; } //Nếu nút Sửa enable thì thực hiện cập nhật dữ liệu if (btnSua.Enabled == true) { sql = "Update tblMatHang SET "; sql += "TenSP = N'" + txtTenSP.Text + "',"; sql += "NgaySX = '" + dtpNgaySX.Value.Date + "',"; sql += "NgayHH = '" + dtpNgayHH.Value.Date + "',"; sql += "DonVi = N'" + txtDonVi.Text + "',"; sql += "DonGia = '" + txtDonGia.Text + "',"; sql += "GhiChu = N'" + txtGhiChu.Text + "' "; sql += "Where MaSP = N'" + txtMaSP.Text + "'"; } //Nếu nút Xóa enable thì thực hiện xóa dữ liệu if (btnXoa.Enabled == true) { sql = "Delete From tblMatHang Where MaSP =N'" + txtMaSP.Text + "'"; } //Thuc thi cau lenh sql cmd = new SqlCommand(sql, con); cmd.ExecuteNonQuery(); //Cap nhat lai DataGrid sql = "Select * from tblMatHang"; LoadDuLieu(sql); //dong ket noi con.Close(); //Ẩn hiện các nút phù hợp chức năng HienChiTiet(false); btnSua.Enabled = false; btnXoa.Enabled = false; }
- Kích vào nút Huỷ để huỷ bỏ công việc đang làm
//Click vào nút Hủy private void btnHuy_Click(object sender, EventArgs e) { //Thiết lập lại các nút như ban đầu btnXoa.Enabled = false; btnSua.Enabled = false; btnThem.Enabled = true; //xoa trang XoaTrangChiTiet(); //Cam nhap HienChiTiet(false); }
- Kích vào nút Thoát
private void btnThoat_Click(object sender, EventArgs e) { //Đóng form this.Close(); }
#### Bạn có thể
[download](http://timoday.edu.vn/wp-content/uploads/2016/06/QLBanHang_Full.rar) mã nguồn toàn bộ chương trình **Chú ý:**
- Khi bạn download mã nguồn về, cần chỉnh sửa đường dẫn đến nơi đặt CSDL của bạn. Đây là source code demo, nên tôi để hardcode chuỗi kết nối. Để xây dựng ứng dụng chuyên nghiệp, bạn nêu lưu chữ chuỗi kết nối trong file
*app.config*để tiện thay đổi khi đi triển khai sản phẩm.
- Để nhập dữ liệu văn bản có dấu tiếng việt vào trong CSDL từ giao diện phần mềm, bạn cần thêm ký tự
**N**trước giá trị của mỗi trường trong câu lệnh SQL, như ví dụ trên câu lệnh Insert, tôi đã thêm cho các trường MaSP, TenSP, DonVi, GhiChu.
- Khi bạn download mã nguồn về, cần chỉnh sửa đường dẫn đến nơi đặt CSDL của bạn. Đây là source code demo, nên tôi để hardcode chuỗi kết nối. Để xây dựng ứng dụng chuyên nghiệp, bạn nêu lưu chữ chuỗi kết nối trong file
Thầy chưa viết Hienchitiet() ạ?
Cảm ơne em. Mình cũng đã cung cấp code để các em xem chi tiết. Mình cũng đã cập nhật trên bài viết rồi nhé!
thưa thầy !!!! không có phần report ak ???
Phần report em có thể xem ở đây: http://timoday.edu.vn/tao-bao-cao-dung-control-reportviewer/
em xài visual 2010 nhưng không thể Solution Explorer > Add > New Item > Service-based Database được ! Mong thầy giúp đỡ !
Em có thể cần cài thêm SQL Server 2008 R2 Express theo link sau: https://www.microsoft.com/en-us/download/details.aspx?id=30438
cám ơn thầy ! cho em hỏi thêm nếu nhập vào trùng ID thì số lượng(mặt hàng) của ID đó sẽ cộng thêm, các lệnh như sum, count được viết thế nào ạ ?
Chào em, để làm được như em thì cần kiểm tra xem ID đó đã tồn tại trong CSDL chưa, nếu tồn tại rồi thì em dùng câu lệnh Update để cộng thêm số lượng vào đúng ID đó.
Câu lệnh để kiểm tra: SELECT COUNT(*) FROM ten_bang WHERE ID = id_cua_em.
Nếu có bản ghi thì giá trị trả về sẽ > 0, chứng tỏ ID đó đã tồn tại.
Sau đó em lấy tổng số lượng hiện tại: SELECT SoLuong FROM ten_bang WHERE ID = id_cua_em
Sau cùng dùng câu lệnh Update: UPDATE ten_bang SET SoLuong = so_luong_cu + sl WHERE ID = id_cua_em
tại sao em copy qua máy khác đã cài sql server luôn mà vẫn báo lỗi dữ liệu ,có cách nào để đem qua máy khác để sử dụng không .
EM cám ơn
Em chú ý, khi em copy đi sang máy khác nếu máy của họ cài SQL Server đặt tên khác thì em chạy sẽ bị lỗi.
Giải pháp em có thể lưu chuỗi kết nối trong file config, rồi khi em copy đến máy khác hoặc em triển khai phần mềm đến máy khác em chỉ cần thay đổi cấu hình trong file này là chương trình sẽ chạy, em không cần phải biên dịch lại code nữa.
Dạ em đả làm được rồi ạ ,Em cám ơn nhiều
Bạn cho mình hỏi lưu trong lưu chuỗi kết nối trong file config là làm như thế nào không mình đang cần
Bạn tham khảo bài này có hướng dẫn cách lưu trữ chuỗi kết nối trong file config nhé: https://timoday.edu.vn/phan-4-lap-trinh-co-so-du-lieu-voi-c/#muc6
Cho em hỏi với ạ. Tại sao chọn form khởi động là frmMain mà vẫn không được. Khi nhấn F5 thì vẫn là form khác ạ.
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new frmMain());
}
Em kiểm tra lại xem biên dịch có bị lỗi gì không? Nếu biên dịch lỗi mà em vẫn cứ chạy thì nó sẽ chạy file biên dịch cũ trước đây.
ko có hàm xoatrangchitiet() ạ
Hàm này đơn giản em. Em có thể viết thêm thủ tục trong code của form chính rồi gọi nó:
private void XoaTrangChiTiet()
{
txtMaSP.Text = “”;
txtTenSP.Text = “”;
dtpNgaySX.Value = DateTime.Now;
…..
}

Pragma: no-cache

Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0

Set-Cookie: learn_press_user_guest_id=1527024775; expires=Tue, 22-May-2018 23:32:55 GMT; Max-Age=7200; path=/

Vary: Accept-Encoding,User-Agent

Link: <http://timoday.edu.vn/wp-json/>; rel="https://api.w.org/", <http://timoday.edu.vn/?p=2449>; rel=shortlink


text:
- Video - Ảnh
- Tin tức
- Thế giới
- Thể thao
- Pháp luật
- Kinh tế
- Nhà nông
- Văn hóa
- Giải trí
- Du lịch
- Bạn đọc
- Video - Ảnh
- Tin tức
- Thế giới
- Thể thao
- Pháp luật
- Kinh tế
- Nhà nông
- Văn hóa
- Giải trí
- Sống trẻ
- Đẹp
- Gia đình
- Công nghệ
- Du lịch
- Ô tô - Xe máy
- Chuyện lạ
- Làng cười
- Bạn đọc
- Đông Tây - Kim Cổ
- Doanh nghiệp
- Trang chủ Dân Việt

markdown: [Video - Ảnh](/video-anh/) [Tin tức](/tin-tuc/) [Thế giới](/the-gioi/) [Thể thao](/the-thao/) [Pháp luật](/phap-luat/) [Kinh tế](/kinh-te/) [Nhà nông](/nha-nong/) [Văn hóa](/van-hoa/) [Giải trí](/giai-tri/) [Du lịch](/du-lich/) [Bạn đọc](/ban-doc/) [Video - Ảnh](/video-anh/) [Tin tức](/tin-tuc/) [Thế giới](/the-gioi/) [Thể thao](/the-thao/) [Pháp luật](/phap-luat/) [Kinh tế](/kinh-te/) [Nhà nông](/nha-nong/) [Văn hóa](/van-hoa/) [Giải trí](/giai-tri/) [Sống trẻ](/song-tre/) [Đẹp](/dep/) [Gia đình](/gia-dinh/) [Công nghệ](/cong-nghe/) [Du lịch](/du-lich/) [Ô tô - Xe máy](/o-to-xe-may/) [Chuyện lạ](/chuyen-la/) [Làng cười](/lang-cuoi/) [Bạn đọc](/ban-doc/) [Đông Tây - Kim Cổ](/dong-tay-kim-co/) [Doanh nghiệp](/doanh-nghiep/) [Trang chủ Dân Việt](/trang-chu-dan-viet/)

X-Cache: QuickCache vv2.1.1rc1 - file

Cache-Control: public

Content-Type: text/html; charset=Utf-8


text:
© Copyright tipbongmienphi.com - All rights reserved
- Bảng biến động tỷ lệ:
Lịch sửa Đối đầu gần đây giữa 2 đội
Phong độ đội tuyển FC Nacional Asuncion
Phong độ đội tuyển Independiente F.B.C.

markdown:
**TƯỜNG THUẬT TRỰC TIẾP TRẬN ĐẤU GIỮA FC NACIONAL ASUNCION VS INDEPENDIENTE F.B.C.**
VĐQG Paraguay, vòng Apt 13
|
|![]()
|
|
FC Nacional Asuncion
M. Paniagua (45+1')
|
|
FT
1 - 0
(1-0)
|
|
Independiente F.B.C.
|
|![]()
THỐNG KÊ TRẬN
|14(5)||Sút bóng||13(5)|
|9||Phạt góc||6|
|17||Phạm lỗi||11|
|0||Thẻ đỏ||0|
|0||Thẻ vàng||0|
|3||Việt vị||1|
|56||Cầm bóng||44|**- Bảng biến động tỷ lệ:**
|
|Thời gian |
|TL Châu Á |
|Tài xỉu
|03:09, 21/04||0.75 * 0 : 3/4 * -0.88||-0.99 * 2 3/4 * 0.85|
|01:08, 21/04||0.75 * 0 : 3/4 * -0.88||-0.95 * 2 3/4 * 0.81|
|23:07, 20/04||0.97 * 0 : 3/4 * 0.91||-0.95 * 2 3/4 * 0.81|
|21:05, 20/04||0.97 * 0 : 3/4 * 0.91||-0.95 * 2 3/4 * 0.81|
|
|
|21/04||FC Nacional Asuncion||1 - 0||Independiente F.B.C.||1 - 0|
|10/02||Independiente F.B.C.||4 - 0||FC Nacional Asuncion||2 - 0|
|04/12||FC Nacional Asuncion||5 - 0||Independiente F.B.C.||-|
|25/09||Independiente F.B.C.||1 - 2||FC Nacional Asuncion||1 - 1|
|17/06||Independiente F.B.C.||0 - 2||FC Nacional Asuncion||0 - 2|
|
|FC Nacional Asuncion: Thắng 4, Thua 1, Hòa 0
|
|
|22/05||Libertad||0 - 0||FC Nacional Asuncion|
|18/05||Sol de America||1 - 0||FC Nacional Asuncion|
|14/05||FC Nacional Asuncion||0 - 2||Sportivo Luqueno|
|07/05||FC Nacional Asuncion||3 - 1||General Diaz|
|29/04||3 De Febrero||1 - 1||FC Nacional Asuncion|
|
|FC Nacional Asuncion: Thắng 1, Thua 2, Hòa 2
|
|
|20/05||Independiente F.B.C.||0 - 3||Cerro Porteno|
|13/05||Deportivo Santani||1 - 1||Independiente F.B.C.|
|09/05||Independiente F.B.C.||2 - 1||Guarani CA|
|05/05||Sportivo Luqueno||1 - 1||Independiente F.B.C.|
|28/04||Independiente F.B.C.||2 - 3||General Diaz|
|
|Independiente F.B.C.: Thắng 1, Thua 2, Hòa 2
LỊCH THI ĐẤU VĐQG PARAGUAY
|Thứ 7, ngày 21/04|
|04h30||FC Nacional Asuncion||
|[1 - 2](http://tipbongmienphi.com/keo-tran-general-diaz-vs-olimpia-asuncion-466694.html) [3 - 1](http://tipbongmienphi.com/keo-tran-cerro-porteno-vs-3-de-febrero-466691.html) [0 - 2](http://tipbongmienphi.com/keo-tran-guarani-ca-vs-libertad-466692.html) [2 - 0](http://tipbongmienphi.com/keo-tran-deportivo-santani-vs-sol-de-america-466693.html) [1 - 2](http://tipbongmienphi.com/keo-tran-sportivo-luqueno-vs-deportivo-capiata-466696.html)
CÁC TRẬN ĐẤU ĐANG DIỄN RA

Via: 1.1 varnish

X-UA-Device: bot

Vary: User-Agent


text:
../public_html/error_log - 2.52418994904 2.52418994904
CÔNG TY TNHH KHÍ CÔNG NGHIỆP THUẬN PHÁT - Copy right @2014Địa chỉ: 37/9B, ấp Đông, Xã Thới Tam Thôn, Huyện Hóc Môn, Tp.HCMĐiện Thoại: 0977.072.554. Email : duoc107@gmail.com. Website :www.khinitolong.com - www.khicongnghiepthuanphat.com

P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"

Connection: Upgrade, close


text:
Dọn dẹp và bảo mật thông tin cá nhân trước năm mới
Nguồn: tuoitre.vn | Lớn | Vừa | Nhỏ
TTO - Máy tính hay tài khoản mạng cũng giống như ngôi nhà của bạn, khi có quá nhiều “đồ” bày bừa lộn xộn, bạn khó có thể tư duy mạch lạc và hiệu quả.
Ảnh: AP
Theo báo USA Today, sau một năm làm việc và giải trí, cái máy tính của bạn đã đầy ắp những thông tin trình duyệt và lưu trữ ở những nơi có khi bạn chưa từng để mắt tới.
Kho dữ liệu kiểu "biên niên số" này sẽ khiến bạn dễ bị do thám qua mạng và trở thành đối tượng rơi vào tầm ngắm của các phần mềm theo dõi quảng cáo.
Giải pháp cho vấn đề này cực kỳ đơn giản: hãy xóa bỏ những dữ liệu không cần thiết để kiểm soát thiết bị và danh tính trên mạng tốt hơn. Dưới đây là các bước giúp dọn dẹp "ngôi nhà" trên mạng và bảo mật thông tin cá nhân gợi ý cho bạn.
1, Xóa sạch lịch sử tìm kiếm trên Google
Nhiệm vụ của Google là "biết tuốt", do đó không có gì ngạc nhiên khi công cụ tìm kiếm này sẽ lưu lại tất cả những lịch sử trình duyệt của bạn trên web.
Điều này thoạt tiên có vẻ vô hại vì máy tính sẽ tự động nhớ những trang bạn từng ghé, sau đó giúp bước truy cập trở lại của bạn vào những trang đó dễ dàng hơn.
Tuy nhiên Google lại cũng biết tất cả những gì bạn đã từng tìm kiếm trước nay. Và nếu bạn có một tài khoản Google, công ty này không những lưu các dữ liệu đó trên máy tính, mà còn trên cả máy chủ cơ sở dữ liệu của họ nữa.
Nói về phương diện theo dõi, nhiều người còn không hay rằng Google cũng theo dõi cả vị trí thực ngoài đời của bạn nữa. Theo đó bạn có thể biết mình đã đi đâu, lúc nào trên Google Map.
Tuy nhiên, tin vui là bạn có thể tùy chọn việc xóa bỏ mọi dữ liệu loại này nhờ vào một tính năng nhỏ có tên là "My Activity".
Hãy kích chuột vào phải My Account ở góc trên bên phải màn hình, chọn My Activity >> Delete Activity By.
Một hộp thoại nhỏ sẽ xuất hiện, và bạn có thể chọn xóa theo khoảng thời gian mong muốn ở trường "Delete by Date" với các tùy chọn xóa tới Hôm nay, Hôm qua, 7 ngày qua, 30 ngày qua hoặc toàn bộ thời gian.
Ảnh: BUSINESS INSIDER
2, Xóa lịch sử tìm kiếm trong Facebook
Bạn có biết Facebook cũng đang lưu các dữ liệu về bạn giống như Google không? Nếu có khác chăng thì chỉ là các dữ liệu của bạn mà Facebook lưu trữ thậm chí còn riêng tư hơn nữa.
Các dữ liệu đó có thể gồm là tên các câu lạc bộ và những hoạt động tiêu khiển, điều này là do đặc trưng thông tin ta thường chia sẻ với bạn bè trong mạng xã hội của mình.
Facebook cũng sẽ biết rõ chuyện bạn đã từng tìm kiếm thông tin của một "người xưa" hay một người hàng xóm. Chỉ cần ai đó có thể truy cập tài khoản của bạn, dù là ngẫu nhiên, thông tin đó cũng sẽ hiển thị rõ ràng.
Facebook cũng có tính năng theo dõi việc bạn đăng nhập tại đâu. Mạng xã hội này cũng có thể theo dõi bạn trong các bức ảnh và bạn hoàn toàn có thể xem tất cả những bức ảnh có tag tên bạn trong đó.
Tuy nhiên bạn hoàn toàn có thể xóa bỏ lịch sử tìm kiếm trên Facebook chỉ thông qua vài cú nhấp chuột.
Để xóa bỏ các tìm kiếm cũ, hãy đăng nhập tài khoản Facebook, tìm tới phần hình tam giác ngược nhỏ ở phần trên bên tay phải → bấm chọn Acivity Log. Đây chính là phần Facebook theo dõi các hoạt động của bạn trên mạng này.
Ở cột bên trái trong cửa sổ Activity Log, dưới các phần Photos, Likes và Comments, bạn bấm vào More, kéo xuống rồi chọn Search.
Tại đây bạn sẽ thấy hiện ra danh sách tất cả những tìm kiếm trong Facebook của bạn được sắp xếp theo ngày. Bạn có thể chọn cách xóa từng cái một bằng cách bấm chọn vào biểu tượng bên phải mỗi lệnh tìm kiếm.
Tuy nhiên để xóa tất cả, bạn chỉ cần bấm vào phần Clear Searchs nằm ở ngay phía trên bên phải của danh sách các nội dung đã tìm kiếm này.
3, Sử dụng công cụ tìm kiếm bí mật
Google có hàng trăm triệu người dùng trên thế giới và tên của công cụ này giờ đây cũng đồng nghĩa luôn với việc "tìm kiếm thông tin".
Tuy nhiên hãy nhớ là bạn không nhất thiết phải dùng Google, bất kể sự tiện dụng của nó, và còn những cách khác giúp bạn tìm kiếm thông tin an toàn hơn trên mạng.
DuckDuckGo là một trong số ấy. Công cụ này đảm bảo giữ bí mật thông tin người dùng và ngăn ngừa việc đưa ra các kết quả tìm kiếm được cá nhân hóa. Và công cụ này cũng có những thủ thuật đặc biệt giúp bạn tùy biến giao diện với các đường tắt tìm kiếm và tính năng Instant Answers.
Có lẽ bạn sẽ ngạc nhiên với chất lượng của công cụ Instant Answer khi thấy nó chẳng hề thua kém gì so với tính năng Knowledge Graph của Google.
Bạn cũng có thể biến DuckDuckGo thành một phần mở rộng cho trình duyệt web của bạn và kích hoạt các phần cài đặt riêng tư hơn để bảo vệ lịch sử tìm kiếm của mình tốt nhất có thể.
Bên cạnh đó thì Ixquick cũng là một trang tìm kiếm được những thích sự riêng tư chú ý. Trang này không lưu lại địa chỉ IP của máy, thông tin trình duyệt cũng như lịch sử tìm kiếm.
Tính năng "kỳ diệu" nhất của Ixquick chính là giúp người dùng tìm kiếm thông tin mà không cho các trang web biết địa chỉ IP của bạn. Theo đó khi một người dùng truy cập các trang web đó, họ hoàn toàn ẩn danh.
Tính năng này có thể sẽ khiến việc tìm kiếm của bạn bị chậm đi một chút. Song như vậy cũng chỉ là cái giá "rất rẻ" với những ai đặt sự bảo mật riêng tư lên hàng đầu.
Ảnh: REUTERS
4, Giữ bí mật lịch sử trình duyệt trên smartphone
Việc lướt web trên điện thoại di động cũng dẫn tới khả năng rò rỉ thông tin cá nhân của người dùng chẳng kém gì trên máy tính.
Tùy theo từng thiết bị và trình duyệt web trên thiết bị đó, cách kiểm soát thông tin cũng khác nhau. Trong khuôn khổ bài viết này, xin đề cập tới cách xử lý với một số loại trình duyệt phổ biến trên thiết bị di động.
a, Apple
Trình duyệt mặc định của Apple là Safari. Bạn không thể xóa lịch sử trình duyệt của mình trực tiếp với Safari. Bạn cần làm việc này thông qua phần cài đặt của thiết bị như sau:
Mở Settings → Safari → kéo xuống và chọn Clear History and Website Date → Bấm vào Clear History and Data để xác nhận.
b, Google Chrome
Nếu không đang sử dụng trình duyệt mặc định của Apple, nhiều khả năng bạn đang dùng Google Chrome.
Vào Google Chrome → Settings → Privacy → History→ Clear on-device History → Chọn Clear on-device History để xác nhận.
c, Firefox
Vào Settings → Clear Private Data → Chọn những phần muốn xóa → Chọn lại Clear Private Data, bấm OK để xác nhận.
d, Opera
Bấm vào chữ "O" đỏ ở cuối trình duyệt → Settings → Clear →tùy chọn xóa cookies hay password đã lưu hoặc xóa tất cả với việc chọn Clear All → Yes để xác nhận.
ĐẮC LUÂN
Đánh giá nội dung
Vui lòng đánh giá nội dung này nếu bạn thấy hay. Cám ơn bạn!
Virus máy tính | Trích dẫn(0) | Nhận xét(0) | Đọc(281)

markdown:
####
Dọn dẹp và bảo mật thông tin cá nhân trước năm mới
![Không rõ Không rõ](images/weather/blank.gif)
[lpag](user/1/)| [Virus máy tính](category/virus/)| [Nhận xét(0)](don-dep-va-bao-mat-thong-tin-ca-nhan-truoc-nam-moi-t2459/#reply)| [Đọc(281)](don-dep-va-bao-mat-thong-tin-ca-nhan-truoc-nam-moi-t2459/)
Nguồn:
[tuoitre.vn](http://tuoitre.vn)| ![Kích thước font ](template/skins8/images/toolbar_fontsize.gif)
[Lớn](javascript: doZoom(16);)| [Vừa](javascript: doZoom(14);)| [Nhỏ](javascript: doZoom(12);) ![Đặt xem bài này ](template/skins8/images/toolbar_rss.gif)
![Đặt xem bài này ](template/skins8/images/toolbar_rss.gif)
![Lưu bài này vào tệp tin ](template/skins8/images/toolbar_save.gif)
![Lưu bài này vào tệp tin ](template/skins8/images/toolbar_save.gif)
**Địa chỉ trích dẫn**http://blog.lpavn.com/tb.php?t=2459&extra=78d34 **TTO - Máy tính hay tài khoản mạng cũng giống như ngôi nhà của bạn, khi có quá nhiều “đồ” bày bừa lộn xộn, bạn khó có thể tư duy mạch lạc và hiệu quả.** *Ảnh: AP*
Theo báo
*USA Today*, sau một năm làm việc và giải trí, cái máy tính của bạn đã đầy ắp những thông tin trình duyệt và lưu trữ ở những nơi có khi bạn chưa từng để mắt tới.
Kho dữ liệu kiểu "biên niên số" này sẽ khiến bạn dễ bị do thám qua mạng và trở thành đối tượng rơi vào tầm ngắm của các phần mềm theo dõi quảng cáo.
Giải pháp cho vấn đề này cực kỳ đơn giản: hãy xóa bỏ những dữ liệu không cần thiết để kiểm soát thiết bị và danh tính trên mạng tốt hơn. Dưới đây là các bước giúp dọn dẹp "ngôi nhà" trên mạng và bảo mật thông tin cá nhân gợi ý cho bạn.
**1, Xóa sạch lịch sử tìm kiếm trên Google**
Nhiệm vụ của Google là "biết tuốt", do đó không có gì ngạc nhiên khi công cụ tìm kiếm này sẽ lưu lại tất cả những lịch sử trình duyệt của bạn trên web.
Điều này thoạt tiên có vẻ vô hại vì máy tính sẽ tự động nhớ những trang bạn từng ghé, sau đó giúp bước truy cập trở lại của bạn vào những trang đó dễ dàng hơn.
Tuy nhiên Google lại cũng biết tất cả những gì bạn đã từng tìm kiếm trước nay. Và nếu bạn có một tài khoản Google, công ty này không những lưu các dữ liệu đó trên máy tính, mà còn trên cả máy chủ cơ sở dữ liệu của họ nữa.
Nói về phương diện theo dõi, nhiều người còn không hay rằng Google cũng theo dõi cả vị trí thực ngoài đời của bạn nữa. Theo đó bạn có thể biết mình đã đi đâu, lúc nào trên Google Map.
Tuy nhiên, tin vui là bạn có thể tùy chọn việc xóa bỏ mọi dữ liệu loại này nhờ vào một tính năng nhỏ có tên là "My Activity".
Hãy kích chuột vào phải My Account ở góc trên bên phải màn hình, chọn
*My Activity >> Delete Activity By.*
Một hộp thoại nhỏ sẽ xuất hiện, và bạn có thể chọn xóa theo khoảng thời gian mong muốn ở trường "Delete by Date" với các tùy chọn xóa tới Hôm nay, Hôm qua, 7 ngày qua, 30 ngày qua hoặc toàn bộ thời gian.
*Ảnh: BUSINESS INSIDER* **2, Xóa lịch sử tìm kiếm trong Facebook**
Bạn có biết Facebook cũng đang lưu các dữ liệu về bạn giống như Google không? Nếu có khác chăng thì chỉ là các dữ liệu của bạn mà Facebook lưu trữ thậm chí còn riêng tư hơn nữa.
Các dữ liệu đó có thể gồm là tên các câu lạc bộ và những hoạt động tiêu khiển, điều này là do đặc trưng thông tin ta thường chia sẻ với bạn bè trong mạng xã hội của mình.
Facebook cũng sẽ biết rõ chuyện bạn đã từng tìm kiếm thông tin của một "người xưa" hay một người hàng xóm. Chỉ cần ai đó có thể truy cập tài khoản của bạn, dù là ngẫu nhiên, thông tin đó cũng sẽ hiển thị rõ ràng.
Facebook cũng có tính năng theo dõi việc bạn đăng nhập tại đâu. Mạng xã hội này cũng có thể theo dõi bạn trong các bức ảnh và bạn hoàn toàn có thể xem tất cả những bức ảnh có tag tên bạn trong đó.
Tuy nhiên bạn hoàn toàn có thể xóa bỏ lịch sử tìm kiếm trên Facebook chỉ thông qua vài cú nhấp chuột.
Để xóa bỏ các tìm kiếm cũ, hãy đăng nhập tài khoản Facebook, tìm tới phần hình tam giác ngược nhỏ ở phần trên bên tay phải → bấm chọn Acivity Log. Đây chính là phần Facebook theo dõi các hoạt động của bạn trên mạng này.
Ở cột bên trái trong cửa sổ Activity Log, dưới các phần Photos, Likes và Comments, bạn bấm vào More, kéo xuống rồi chọn Search.
Tại đây bạn sẽ thấy hiện ra danh sách tất cả những tìm kiếm trong Facebook của bạn được sắp xếp theo ngày. Bạn có thể chọn cách xóa từng cái một bằng cách bấm chọn vào biểu tượng bên phải mỗi lệnh tìm kiếm.
Tuy nhiên để xóa tất cả, bạn chỉ cần bấm vào phần Clear Searchs nằm ở ngay phía trên bên phải của danh sách các nội dung đã tìm kiếm này.
**3, Sử dụng công cụ tìm kiếm bí mật**
Google có hàng trăm triệu người dùng trên thế giới và tên của công cụ này giờ đây cũng đồng nghĩa luôn với việc "tìm kiếm thông tin".
Tuy nhiên hãy nhớ là bạn không nhất thiết phải dùng Google, bất kể sự tiện dụng của nó, và còn những cách khác giúp bạn tìm kiếm thông tin an toàn hơn trên mạng.
DuckDuckGo là một trong số ấy. Công cụ này đảm bảo giữ bí mật thông tin người dùng và ngăn ngừa việc đưa ra các kết quả tìm kiếm được cá nhân hóa. Và công cụ này cũng có những thủ thuật đặc biệt giúp bạn tùy biến giao diện với các đường tắt tìm kiếm và tính năng Instant Answers.
Có lẽ bạn sẽ ngạc nhiên với chất lượng của công cụ Instant Answer khi thấy nó chẳng hề thua kém gì so với tính năng Knowledge Graph của Google.
Bạn cũng có thể biến DuckDuckGo thành một phần mở rộng cho trình duyệt web của bạn và kích hoạt các phần cài đặt riêng tư hơn để bảo vệ lịch sử tìm kiếm của mình tốt nhất có thể.
Bên cạnh đó thì Ixquick cũng là một trang tìm kiếm được những thích sự riêng tư chú ý. Trang này không lưu lại địa chỉ IP của máy, thông tin trình duyệt cũng như lịch sử tìm kiếm.
Tính năng "kỳ diệu" nhất của Ixquick chính là giúp người dùng tìm kiếm thông tin mà không cho các trang web biết địa chỉ IP của bạn. Theo đó khi một người dùng truy cập các trang web đó, họ hoàn toàn ẩn danh.
Tính năng này có thể sẽ khiến việc tìm kiếm của bạn bị chậm đi một chút. Song như vậy cũng chỉ là cái giá "rất rẻ" với những ai đặt sự bảo mật riêng tư lên hàng đầu.
*Ảnh: REUTERS* **4, Giữ bí mật lịch sử trình duyệt trên smartphone**
Việc lướt web trên điện thoại di động cũng dẫn tới khả năng rò rỉ thông tin cá nhân của người dùng chẳng kém gì trên máy tính.
Tùy theo từng thiết bị và trình duyệt web trên thiết bị đó, cách kiểm soát thông tin cũng khác nhau. Trong khuôn khổ bài viết này, xin đề cập tới cách xử lý với một số loại trình duyệt phổ biến trên thiết bị di động.
*a, Apple*
Trình duyệt mặc định của Apple là Safari. Bạn không thể xóa lịch sử trình duyệt của mình trực tiếp với Safari. Bạn cần làm việc này thông qua phần cài đặt của thiết bị như sau:
Mở Settings → Safari → kéo xuống và chọn Clear History and Website Date → Bấm vào Clear History and Data để xác nhận.
*b, Google Chrome*
Nếu không đang sử dụng trình duyệt mặc định của Apple, nhiều khả năng bạn đang dùng Google Chrome.
Vào Google Chrome → Settings → Privacy → History→ Clear on-device History → Chọn Clear on-device History để xác nhận.
*c, Firefox*
Vào Settings → Clear Private Data → Chọn những phần muốn xóa → Chọn lại Clear Private Data, bấm OK để xác nhận.
*d, Opera*
Bấm vào chữ "O" đỏ ở cuối trình duyệt → Settings → Clear →tùy chọn xóa cookies hay password đã lưu hoặc xóa tất cả với việc chọn Clear All → Yes để xác nhận.
**ĐẮC LUÂN** **Đánh giá nội dung**
Vui lòng đánh giá nội dung này nếu bạn thấy hay. Cám ơn bạn!
[| Posted by:](javascript:scroll(0,0)) ![TOP ](template/skins8/images/top.gif)
![TOP ](template/skins8/images/top.gif)
[lpag](user/1/) [Virus máy tính](category/virus/)| [Trích dẫn(0)](javascript: void(0);)| [Nhận xét(0)](don-dep-va-bao-mat-thong-tin-ca-nhan-truoc-nam-moi-t2459/#reply)| [Đọc(281)](don-dep-va-bao-mat-thong-tin-ca-nhan-truoc-nam-moi-t2459/)

Cache-Control: no-store, no-cache, must-revalidate

Vary: User-Agent, Accept

Set-Cookie: readentry=2459%2C; expires=Tue, 22-May-2018 22:00:02 GMT

X-Powered-By-Plesk: PleskWin