مشاهده نسخه کامل
: کمک در مورد کدنویسی برای Access
mr_mashmash
29-04-2007, 09:44
با سلام دوستان یک مشکلی دارم که هرچه سعی کردم موفق نشدم
یک بانک اطلاعاتی برای آرشیو اسناد تو اکسس 2007 دارم میخوام کدی بنویسم که فیلد کد بصورت اتوماتیک توسط اطلاعاتی که از بقیه فیلدها بدست میاد پر بشه . فرض کنید کد بصورت xx-yy-z-aaa هست و قسمتهای xx و yy و z از روی فیلدهایی که کاربر وارد می کنند بدست می اید ولی برای پیدا کردن aaa چون شماره مسلسله باید در جدول جستجو کنه تا تعداد قبلیهارو پیدا کنه و یکی بهش اضافه کنه تا بدست بیاد.
حالا متاسفانه من هرچی سعی می کنم تا با استفاده از recordset و find یا SELECT این کارو بکنم vb6 از کد ایراد میگیره ، لطفا اساتید زحمت بکشید و کد مربوطه رو از اول که connection باید با ADO یا DAO برقرار بشه راهنمایی کنن چون واقعا تو این مورد مبتدی و تازه کار هستم و با مطالعه کتابهای اموزشی هم نتونستم مطلبو خوب درک و اجرا کنم.:41:
سلام
مشکلی نیست و من کمی خنگ هستم!
متوجه نشدم شما از x,y,z,a میخواهید x-y-z-a را بدست بیاورید یا برعکس
شما کدام را دارید و کدارم را میخواهید؟
خوب راستش منم مثل شما تازه کار هستم ولی چیزی که به ذهنم می رسه اینه لطفا بقیه دوستان هم نظر بدن شاید هم اشتباه باشه ها!!!!!!!!!!
به نظر من aaa رو تو یه فیلد جدا تو بانکت ذخیره کن بعدا موقع نمایش کنار اون فیلد ها نمایش بده
فرض کن اسم فیلد تو بانکت هم aaa هست باید اول بزرگترین رقم رو پیدا کنی!
sql="Select Max(aaa) as aaa From YourTable"
ado.recordsource=sql
ado.refresh
MaxNumber=ado.recordset.getstring
MaxNumber=cstr(MaxNumber)
MaxNumber=MaxNumber+1
حالا باید این مقدار رو به آخرین فیلدت وارد کنی تو بانک راستش دیگه نمی دونم
البته اینم چیزی بود که من از سوال شما فهمیدم
mr_mashmash
29-04-2007, 14:39
انگار بد توضیح دادم . ببینید x,y,z و اینارو بی خیال. فرض کنید میخایم تعداد رکوردهای یک جدول رو که توی یک شرط خاص صدق میکنن رو پیدا کنیم . مثلا میخوام ببینم چندتا رکورد هست که فیلد code اونها با "11-12" یا مثلا "123" شروع میشه. از DAO و ADO یه چیزایی میدونم ولی هرکاری میکنم نمیتونم از Findfirst و Findnext و توابع مربوطه درست استفاده کنم. به نظر خودم تو تعریف connection و مقدار دهی مشکل دارم. حالا اگر از دوستان کسی بتونه کدش رو بنویسه کمک بزرگی کرده. متشکرم
codep=123
Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset
dim i as int,counter as int
with cnn
. connectionstring=adodc1.connectionstring
.CursorLocation = adUseClient
.open
end with
Set rst = cnn.Execute("Select code from xxxxxxx;")
rst.Movenext
i=0
While Not rst.EOF
If rst.Fields("code") Like "codep*" Then
i=i+1
end if
rst.movenext
wend
counter=
i
فقط شما می بایستی در adodc1 فرمتون نوع بانک و خود بانک رو تعریف کنید.
اینم مثال دیگه برای پیدا کردن اسامی که با حروفی بین A و D باشند
Sub LikeX()
Dim dbs As Database, rst As Recordset
Set dbs = OpenDatabase("Northwind.mdb")
Set rst = dbs.OpenRecordset("SELECT LastName," & " FirstName FROM Employees" & " WHERE LastName Like '[A-D]*';")
rst.MoveLast
dbs.Close
End Sub
[quote=amin_ir;1047942]
codep=123
Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset
dim i as int,counter as int
with cnn
. connectionstring=adodc1.connectionstring
.CursorLocation = adUseClient
.open
end with
Set rst = cnn.Execute("Select code from xxxxxxx;")
rst.Movenext
i=0
While Not rst.EOF
If rst.Fields("code") Like "codep*" Then
i=i+1
end if
rst.movenext
wend
counter=
i
فقط شما می بایستی در adodc1 فرمتون نوع بانک و خود بانک رو تعریف کنید.
اینم مثال دیگه برای پیدا کردن اسامی که با حروفی بین A و D باشند
Sub LikeX()
Dim dbs As Database, rst As Recordset
Set dbs = OpenDatabase("Northwind.mdb")
Set rst = dbs.OpenRecordset("SELECT LastName," & " FirstName FROM Employees" & " WHERE LastName Like '[A-D]*';")
rst.MoveLast
dbs.Close
end sub
[quote=amin_ir;1047971][quote=amin_ir;1047942]
codep=123
Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset
dim i as int,counter as int
with cnn
. connectionstring=adodc1.connectionstring
.CursorLocation = adUseClient
.open
end with
Set rst = cnn.Execute("Select code from xxxxxxx;")
rst.Movenext
i=0
While Not rst.EOF
If rst.Fields("code") Like "codep*" Then
i=i+1
end if
rst.movenext
wend
counter=
i
فقط شما می بایستی در adodc1 فرمتون نوع بانک و خود بانک رو تعریف کنید.
اینم مثال دیگه برای پیدا کردن اسامی که با حروفی بین A و D باشند
Sub LikeX()
Dim dbs As Database, rst As Recordset
Set dbs = OpenDatabase("Northwind.mdb")
Set rst = dbs.OpenRecordset("SELECT LastName," & " FirstName FROM Employees" & " WHERE LastName Like '[A-D]*';")
rst.MoveLast
dbs.Close
end sub
علت اینکه چند بار این متن ذخیره شده این بود که می خواستم سعی کنم متن بصورت انگلیسی از چپ به راست مرتب بشه که برنامه خوانا بشه که آخرشم نتونستم این کار رو انجام بدم
mr_mashmash
30-04-2007, 08:04
امین جان ممنون از توجهت
انگار بد توضیح دادم . ببینید x,y,z و اینارو بی خیال. فرض کنید میخایم تعداد رکوردهای یک جدول رو که توی یک شرط خاص صدق میکنن رو پیدا کنیم . مثلا میخوام ببینم چندتا رکورد هست که فیلد code اونها با "11-12" یا مثلا "123" شروع میشه. از DAO و ADO یه چیزایی میدونم ولی هرکاری میکنم نمیتونم از Findfirst و Findnext و توابع مربوطه درست استفاده کنم. به نظر خودم تو تعریف connection و مقدار دهی مشکل دارم. حالا اگر از دوستان کسی بتونه کدش رو بنویسه کمک بزرگی کرده. متشکرم
سلام
همین! چه کار وحشتناکی!
نمیدانم خدا دستورات SQL را برای چه خلق کرده!
کافیست دستور SQL زیر را به وسیله یک Command یا Connection در ADO اجرا کنید.
SELECT COUNT(*) FROM tablename WHERE code=123
البته اگر code یک فیلد String باشد، باید بین جفت کتیشن یا تک کتیشن قرار گیرد.
فقط میتوانم کدهای VB8 را بگذارم که احتمالاَ به کارتان نمی آید
mr_mashmash
30-04-2007, 13:35
اره به همین سادگی ولی پیر منو دراورده بود! این جفت کتیشن هم برا خودش داستانی داشت تا درست دربیاد.
vBulletin , Copyright ©2000-2025, Jelsoft Enterprises Ltd.