|
|
Có cách sau:
1-Select top 10 as A
2-Select top 20 as B
3-Nối A right join với B
4-where A.ID is null
Tất cả cho chung vào một lệnh SQL.
|
|
|
Bạn Taejilovely có thể up vài dòng code của mình lên đây không?
và hình như dòng code dạng "console.writeline("xxxxxxxxxxxxxxxxxxx") " của bạn sẽ không được comply vào trình đâu chỉ dùng để debug thôi. Do vậy khi chạy thử để debug thì được, nhưng chuyển sang máy khác thì ...
PS. Mình đặc biệt chỉ dùng VB.net. và thấy nó thích hợp với các project lớn, lập trình thep team..
|
|
|
Z0rr0 wrote:
Vậy thì bồ phải biết cấu trúc (file format) của multipages TIFF rồi tự viết mã chuyển thôi.
Thật là chán khi phải dùng VB.net để convert format giống như dùng ngôn ngữ khác.
Mình cũng đã thử dùng cách này đọc header, IFD, ImageValues... nhưng không phê lắm.
Ideas?
|
|
|
sugarpirog wrote:
nghiahuong2gl wrote:
Cho mình hỏi vấn đề này chút xíu, mình tạo một form trong đó mình có 3 option button và một button , 3 option button này đặt trong một group. Giả sử mình muốn check vào option button 1 sau đó nhấn vào button thì sẽ xuất hiện một message box với nội dung "AAAA" chẳng hạn, tương tự cho option button 2 và 3.
Mình viết code (đặt trong sự kiện nhấn button) như sau:
If chebox1.Value = True Then
MsgBox "AAAA"
ElseIf chekbox2.Value = True [ ] Then
MsgBox "BBBB"
ElseIf checkbox3.Value = True Then
MsgBox "CCCC"
Else
MsgBox "Chua clịk vao option button"
End If
Nhưng khi chạy chương trình thì cứ báo lỗi : Run-time error : '2426' , You entered an expression has no value
Vậy đây là lỗi gì, và mình phải sữa như thế nào, mong các ban giúp cho, cảm ơn nhiều.
Trong chế độ design type chính xác trường Name tương ứng như sau:
option button1 > chebox1
option button2 > chekbox2
option button3 > checkbox3
Ở dòng elseif thứ 2 phải có khoảng trống giữa true và then.
Đảm bảo se chay ngon ơ.
Thế nhé, mình thử rồi.
|
|
|
nghiahuong2gl wrote:
Cho mình hỏi vấn đề này chút xíu, mình tạo một form trong đó mình có 3 option button và một button , 3 option button này đặt trong một group. Giả sử mình muốn check vào option button 1 sau đó nhấn vào button thì sẽ xuất hiện một message box với nội dung "AAAA" chẳng hạn, tương tự cho option button 2 và 3.
Mình viết code (đặt trong sự kiện nhấn button) như sau:
If chebox1.Value = True Then
MsgBox "AAAA"
ElseIf chekbox2.Value = TrueThen
MsgBox "BBBB"
ElseIf checkbox3.Value = True Then
MsgBox "CCCC"
Else
MsgBox "Chua clịk vao option button"
End If
Nhưng khi chạy chương trình thì cứ báo lỗi : Run-time error : '2426' , You entered an expression has no value
Vậy đây là lỗi gì, và mình phải sữa như thế nào, mong các ban giúp cho, cảm ơn nhiều.
Trong chế độ design type chính xác trường Name tương ứng như sau:
option button1 > chebox1
option button2 > chekbox2
option button3 > checkbox3
Đảm bảo se chay ngon ơ.
Thế nhé, mình thử rồi.
|
|
|
nghiahuong2gl wrote:
Cho mình hỏi vấn đề này chút xíu, mình tạo một form trong đó mình có 3 option button và một button , 3 option button này đặt trong một group. Giả sử mình muốn check vào option button 1 sau đó nhấn vào button thì sẽ xuất hiện một message box với nội dung "AAAA" chẳng hạn, tương tự cho option button 2 và 3.
Mình viết code (đặt trong sự kiện nhấn button) như sau:
If chebox1.Value = True Then
MsgBox "AAAA"
ElseIf chekbox2.Value = TrueThen
MsgBox "BBBB"
ElseIf checkbox3.Value = True Then
MsgBox "CCCC"
Else
MsgBox "Chua clịk vao option button"
End If
Nhưng khi chạy chương trình thì cứ báo lỗi : Run-time error : '2426' , You entered an expression has no value
Vậy đây là lỗi gì, và mình phải sữa như thế nào, mong các ban giúp cho, cảm ơn nhiều.
Mình thử đoạn code của bạn thì thấy có lỗi nhưng quan sát kỹ thì thấy trong đoạn code trên cần type chính xác OptionButton.Name là chẳng có lỗi gì cả.
Đó chỉ là bài đố chữ vui thôi.
|
|
|
Xin hỏi các bạn cách chuyển multi-pages tiff sang từng file riêng rẽ CHO TỪNG PAGE, trên VB.net mà không dùng .dll của hãng thứ 3 không?
|
|
|
PhamTienSinh wrote:
1 - Đây là box lập trình điều khiển hệ thống mà
2 - Những câu hỏi về CSDL,.NET tốt nhất lên qua diễn đàn khác như www.caulacbovb.com,dot.net.vn..
hỏi ở đây thì chỉ người đang thừa thời gian nên trả lời thôi.
1-Ừ thì nên vào www.caulacbovb.com mà xem thêm, đó là trang của PhamTienSinh ý mà. Hehehe. Trong đó cũng hay về .net đó.
2-PTS đừng hiểu lầm ý nghĩa của câu nói cử mình về thừa thời gian nhé.
To noobcoder: Hãy tìm hiểu các propoties của DataAdapter sẽ thấy SelectCommand.Thân.
|
|
|
conmale wrote:
Tôi nghĩ hướng bạn khai triển thiếu khả thi.
Outlook là mail client. Nếu bạn dựa vào biến cố "Sent" để xác định "đã gởi" thì thiếu một nửa vấn đề bởi vì gởi ở đây chỉ mới là phần gởi thuộc về mail client (outlook). Thật sự thông tin (mail) có gởi đi hay chưa thì lại nằm ở mail server. Việc mail server gởi mail khi nào là chuyện hoàn toàn tách rời. Hơn thế nữa, việc mail server đầu bên kia khi nào nhận là việc càng tách rời hơn nữa. Cuối cùng, khi nào mail client (hoặc một ứng dụng nào đó nhận thông tin) ở đầu bên kia nhận là điều bạn không thể biết được ngoại trừ họ gởi ngược lại thông tin cho biết họ đã nhận. Ngay cả giai đoạn gởi ngược thông tin này xảy ra khi nào, nhanh chậm ra làm sao cũng hoàn toàn nằm ngoài khả năng bạn có thể capture được.
Nếu bạn dựa vào SMTP để chuyển gởi thông tin thì đành phải chấp nhận giới hạn và quy định của giao thức này mà thôi. Theo tôi, việc capture "sent" event không đủ và không khả thi để xác định người nhận hay không và khi nào họ nhận.
Thân mến.
Rất cám ơn ý kiến của Còm mà lé. Làm việc trên .net mà kiến thức về net của mình còn yếu thật.
Nếu khi mình chỉ giới hạn mục đính chặn Send trên MailClient khi chuyển gói tin đi ra MailServer thôi, và thông tin về sự kiện như ngày giờ chuyển đi, người nhận, tên file attachment.. sẽ được ghi vào csdl của project như kiểu activitylog.
Vấn đề là ở chỗ, sau khi mail.display thì mọi giá trị mail.To, mail.SendName... không thể capture được.
Bạn nào có kinh nghiệm về việc này cho thêm ý kiến nhé.
|
|
|
Xin cám ơn.
Có lẽ nếu chỉ cảnh báo thì add-in cho outlook là đủ rồi, nhưng nếu muốn chặn và sử lý sự kiện trong project của mình thì không được.
|
|
|
Noobcoder wrote:
Em có 1 bảng là SINHVIEN(Id, HoTen, NSinh, GioiTinh, DThoai )
bi giờ em tìm sinhvien có id là 509 thì code em nên viết như thế nào ?
câu lệnh em viết như sau
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
dim cmd as String
cmd="SELECT* FORM SINHVIEN WHERE Id = " & " ' " & txtSearch.Text & " ' "
End Sub
em bít là code trên thiếu nhưng em ko bít là thiếu gì nữa, mong các anh chỉ em
à, em dùng vb.net 2k5, và csdl là access ạ.
Xin chào!
Trong đoạn code trên, vừa sai, vừa thừa vùa thiếu:
1- Sai: From chứ không phải form
2- Thừa thành sai: nên là .......... WHERE Id = " & txtSearch.Text
3- Thiếu:
a-Khai báo DataAdapter
b-Tạo connection
c-Tạo DataSet và dataControl
d-selectCommand.commandtext=cmd
e-DataAdapter.Fill
ngoài ra còn một số thứ như: đóng, mở connection, sử lý lỗi txtSearch...
Vì đang thừa thời gian nên trả lời thôi.
|
|
|
Mình đang làm một project trên VS2005 trong đó cần tự động chuyển thông tin từ project cho người khác bằng mail qua outlook.Việc chuyển đi thì đã được giải quyết, nhưng để kiểm tra xem thông tin đã được chuyển đi chưa thì không làm được. Ý tưởng của mình là bắt sự kiện send của outlook nhưng không biết làm như thế nào.
Xin mọi người cho ý kiến và chỉ cho phải làm thế nào?
Cám ơn trước nhé.
|
|
|
Nếu trên máy bạn có cài OracleClient thì nên dùng các DataCommands của OracleClient.dll.
Mình đã làm mấy cái projects sử lý SCSL của Oracle trên VS2005. Chẳng thấy có vấn đề gì cả.
Bạn thử post lên đoạn lệnh hoàn chỉnh mà có lỗi. Mọi người sẽ kiểm tra hộ.
|
|
|
Bạn thử cái này nhé
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=5483&lngWId=10
nhưng hình như Microsoft bịt mất rồi.
Code dùng để tham khảo đi tiếp. Rẩt, rất gần với cái bạn hỏi
|
|
|
Căng là ở chữ ký điện tử của bạn HKDng. Bị hiểu nhầm. Heeee
|
|
|
Cơ chế Transaction chẳng liên quan gì đến sủ dụng nhiều máy, nó dùng để kiểm tra các tác nghiệp trên CSDL: nếu thực hiện hết các bước thì commit, nếu không thì rollback.
Cứ viết trình bình thường cho một máy, rồi chạy thử trên nhiều máy, bạn sẽ thấy là tự nhiên sẽ chạy được trên nhiều máy và cùng làm việc trên một CSDL. Nếu cần trình chạy ngon, nhanh thì chỉ cần lưu ý những điều mình đã trao đổi ở trên.
Còn việc sử lý lỗi thì phải làm rồi, tùy fantazy của từng người.
|
|
|
bokinhvan_gl wrote:
Mình có 1 CSDL trên SQL sever,mình đang lập trỉnh để nhiều máy truy cập vào CSDL này cùng 1 lúc,nếu máy này truy cập thêm ,xóa ,sửa xong rồi đền máy khác,mình sử dụng Vb 2005,nếu có bạn nảo giỏi về VB2005 xin giúp đỡ.MÌnh đang cần 1 đoạn code về truy cập CSDL tuần tự này.Thanks
Lập trình truy cập CSDL trên nhiều máy, theo mình hiểu thi không có gì, trên VS2005. Cứ tiến hành lập trình bình thường như cho một máy, khi chạy cũng làm việc được trên nhiều máy.
Cho đến lúc này, mình cũng không biết khái niệm lập trình cho truy cập CSDL tuần tự là gì. Sorry.
Tất nhiên là với mục đích lập trình chạy CSDL từ nhiều máy, về kỹ năng phải chú ý là:
1-chỉ open connection khi cần thiết và đóng ngay khi thực hiện xong tác nghiệp,
2-nên dùng những truy vấn đơn giản
3-Lập trình sao cho số tác nghiệp trên CSDL là ít nhất, bằng cách lọc dữ liêu, dùng cờ...
4-Hạn chế tiến hành tác nghiệp CSDL từ sử lý sự kiện tự phát, trách quay vòng.
.....
|
|
|
Mình thì không hiểu MFC, nhưng trên VB.net thì thế này:
Dim MyMDIForm As New MainScreen
'MyMDIForm.MinimizeBox = False
'MyMDIForm.MaximizeBox = False
MyMDIForm.MdiParent = Me
MyMDIForm.ControlBox = False
MyMDIForm.Dock = DockStyle.Fill
MyMDIForm.Show()
Bản chất là cho MyMDIForm.ControlBox = False sau đó mới maximize MDIForm được.
|
|
|
Trên VS bạn có thể thử mẩu code sau:
dim Mystring as string
Mystring=InputBox(....)
try
CDate(Format(now(), Mystring))
console.writeline("Good format")
catch
console.writeline("Bad format")
end try
Hope it help you.
|
|
|
Run any program as a Windows service
Application as Service 2.0
Application as Service makes any application run as Windows service, benefiting from all of the advantages native Windows services provides.
It ensures that your application will:
run at the specific time or date (backup utility, scheduler, etc.)
automatically restart on power failures or application crashes (client-server utilities, databases, etc.)
run at the predefined order (follows the service it depends upon)
start prior to user logon (keyloggers, surveillance utilities, etc.)
be executed with specified user rights and priority
You can configure Application as Service using its intuitive GUI interface or command line configurator directly from your software! Application as Service features very low CPU usage, custom environment variables, monitoring and detailed logging as well as many other features.
|
|
|
Bạn thử nghiên cứu cái này xem
http://www.application-as-service.com/
|
|
|
Bạn thử chèn code update một activeRow vào sự kiện ExitCellEdit hoặc AfterRowUpdate cua DateGrid. sau khi edit một cell nào đó thì sự thay đổi của nó sẽ update ngay vào DateBase và chỉ một mà thôi.
Thân.
|
|
|
Bác cho biết thêm về các phép tính với sổ thực, có dấu chấm động nữa đi. Cách trình bầy của Bác thật dễ hiểu.
|
|
|
Có lẽ phải thế này
insert into SinhVien (ten, inputdate) values ('sv01',12/4/1987)
Trong câu lệnh SQL phải có khoảng trống trước và sau VALUES )
|
|
|
Có một trường hợp thế này:
Tôi có một tableA có hai trường BeginTime và EndTime có cấu trúc giống hệt nhau với type là DateTime.
Khi update bằng SQL là "UPDATE TABLEA SET BEGINTIME=#01/05/2007 20:00:00#, ENDTIME=#31/05/2007 08:00:00#" thì kết quả nhận được trong TableA tương ứng trong các trường BeginTime là 05/01/2007 20:00:00và EndTime là 31/05/2007 08:00:00.
Như vậy trong cột BeginTime bị update sai, cho dù cùng update bằng một lệnh.
Ý kiến các bạn về cách giải quyết vấn đề này như thế nảo? Thanks.
|
|
|
Cám ơn ý kiên của bạn.
Dung API trong VB thì lúc đầu cũng hơi khó chịu, nhưng khi nghiên cứu kỹ API distionary thì cũng chẳng khó lắm. Vả lại API trong nhiều trường hợp lại là cách giải thoát duy nhất. Thí dụ như pointer trong VB chẳng hạn.
Bạn có phương pháp khác nào thể hiện pointer trong VB không vậy? Nếu có thì post lên cho mọi người tham khảo thêm.
Mình thi rất đuội về C. Nhưng khi đọc helf thì chủ yếu là C nên khi sủ dụng toàn phải tự convert bằng tay sang VB. Mình thì viết trình cho người khác, còn mình thì làm bằng tay. Vậy thử tìm trình convert xem sao...
|
|
|
Cám ơn bạn đã trả lời. Nhân tiện mình nói thêm một chút.
Mình đã viết xong một project về quản lý cho công ty, nhưng khi chạy trên các máy khác nhau thì giao diện hiện ra không đẹp, đặc biệt là những datagrid với số liệu quan trọng, phải chỉnh bằng tay, không dễ chịu gì cả.
Khi sử dụng Word hoặc Excel, người sử dụng có thể zoom giao diện đến mức có thể không cần đến ScrollBars. Mình cũng muôn project của mình có được khả năng đó. Nhưng làm sao bây giờ...
Bạn có nói là sử dụng ActiveX, bạn có thể nói chi tiết hơn chút được không?
Rất mong hoc hỏi được nhiều hơn. Thanks.
|
|
|
Xin các cao thủ VB chỉ giáo:
Thông thường khi form resize thì các controlls trên nó chỉ di chuyển chổ, hoặc bị che khuất, chứ kích thước của chúng không thay đổi. Làm sao để cho các controlls trên form tự động resize khi form resize? Automatically reposition or resize controls upon form resize.
(Vấn đề tôi hỏi ở trên là chỉ cho các controlls chuẩn của VB)
|
|
|
Convert pointer from C into Visual Basic
Đay là bản dịch thôi nhé.
Nhiều người nghĩ là trong Visual Basic không có pointer và do vậy nó không có khả năng thể hiện kết cấu số liệu bằng pointer (Băng cách khai báo kiểu số liệu thông qua class).
Thật ra họ chỉ đúng một phần. từ khi Visual Basic có khả năng truy cập vào trong Win32 API thì chăng khó gì dùng pointer. Chúng ta hãy so sánh một đọan code trong C sau đó chuyển đổi chúng sang Visual Basic.
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
int * ptr; //1
ptr=(int *)malloc(sizeof(int)); //2
*ptr=10; //3
printf("Địa chỉ của ptr là %d và giá trị của nó là %d\n",ptr,*ptr); //4
free(ptr); //5
return 0;
}
Tác giả đánh số dòng để bạn dọc tiện theo dõi.
Tương đương dòng 1, trong VB sẽ là:
dim ptr as long 'int * ptr;
Ta dùng cánh này thì dễ làm hơn vì bản chất pointer chỉ là một biến mà giá trị của nó là đị chỉ của một biến khác. Nó phải là long type vì pointẻ trong MS Windows là 4 bytes.
Dòng thứ 2:
ptr=(int *)malloc(sizeof(int));
Hừm, Làm sao ta truy cập được bộ nhớ trong VB? Hàm malloc không có trong VB… Bây giờ ta sử dụng hàm Win32 API HeapAlloc(...). Nếu các bạn chưa rõ lắm về hàm này thì tự đọc thêm nhé.
Sau đây là code VB:
Dim hHeap As Long hHeap = GetProcessHeap()
ptr=HeapAlloc(hHeap,0,2) 'integer trong Visual Basic chứa 2 bytes
Bây giờ ta có thể tóm trong bộ nhớ
if ptr<>0 then
‘Làm gì đó
end if
Bây giờ,
*ptr=10;
Trong VB ta dung hàm CopyMemory được khai báo như sau
Public Declare Sub CopyMemory Lib "kernel32" Alias _
"RtlMoveMemory" (Destination As Any, Source As Any, _
ByVal Length As Long
Ở đây có một thủ thuật nhỏ: Tôi thay đổi thông số và thu được :
‘để ghi lên bộ nhớ
Public Declare Sub CopyMemoryWrite Lib "kernel32" Alias _
"RtlMoveMemory" (Byval Destination As long, Source As Any, _
ByVal Length As Long)
' để đọc bộ nhớ
Public Declare Sub CopyMemoryRead Lib "kernel32" Alias _
"RtlMoveMemory" (Destination As Any,byval Source As Long, _
ByVal Length As Long)
Vậy nên,
*ptr=10;
Sẽ chuyển sang VB như sau:
dim i as integer
i=10
CopyMemoryWrite ptr,i,2 ' integer có 2 bytes
Tại dòng 5.
'printf("%d\n",*ptr);
dim j as integer
CopyMemoryRead j,ptr,2
MsgBox "The adress of ptr is " & cstr(ptr) & _
vbCrlf & "and the value is " & cstr(j)
Bây giờ ta giải phóng bộ nhớ:
HeapFree GetProcessHeap(),0,ptr
Dưới đây là toàn bộ phần source code (Chỉ cần copy vào project rồi chạy thử)
Option Explicit
Private Declare Sub CopyMemory Lib "kernel32" _
Alias "RtlMoveMemory" (Destination As Any, _
Source As Any, ByVal Length As Long)
Private Declare Function GetProcessHeap Lib "kernel32" () As Long
Private Declare Function HeapAlloc Lib "kernel32" _
(ByVal hHeap As Long, ByVal dwFlags As Long,_
ByVal dwBytes As Long) As Long
Private Declare Function HeapFree Lib "kernel32" _
(ByVal hHeap As Long, ByVal dwFlags As Long, lpMem As Any) As Long
Private Declare Sub CopyMemoryWrite Lib "kernel32" Alias _
"RtlMoveMemory" (ByVal Destination As Long, _
Source As Any, ByVal Length As Long)
Private Declare Sub CopyMemoryRead Lib "kernel32" Alias _
"RtlMoveMemory" (Destination As Any, _
ByVal Source As Long, ByVal Length As Long)
Private Sub Form_Load()
Dim ptr As Long
Dim hHeap As Long
hHeap = GetProcessHeap()
ptr = HeapAlloc(hHeap, 0, 2)
If ptr <> 0 Then
Dim i As Integer
i = 10
CopyMemoryWrite ptr, i, 2
Dim j As Integer
CopyMemoryRead j, ptr, 2
MsgBox "The adress of ptr is " & CStr(ptr) & _
vbCrLf & "and the value is " & CStr(j)
HeapFree GetProcessHeap(), 0, ptr
End If
End Sub
|
|
|
Bản chất của việc convert ở trên là chuyển listing từ ngôn ngữ lập trình cấp thấp sang ngôn nhữ lập trình cao hơn- đó cũng là công việc của các decomplier. Nếu tìm được các trình concert như trên và so sánh thử các doạn trình thi ta sẽ tìm hiểu được các thuật toán giải quyết các vấn đề (rất dễ trong ngôn ngữ này, nhưng chưa có trong ngôn ngữ khác, như pointer chẳng hạn. Có lẽ cũng thú vị chứ sao...
Xin lưu ý là, pointer có trong Pascal, Delphi nhưng bài toán trên cũng đã có lời giải đáp.
|
|
|
|
|
|
|