-
صفحه بندی دیتا با افکت و انیمیشن در مرورگر وب Data-paging with transitions/animations in We
کد کامل فرم Main
Option Compare Database
Option Explicit
Private DataSources As New Collection
Private RecordsCount As Long
Private Sub Form_Close()
Set DataSources = Nothing
End Sub
Private Sub Form_Load()
Dim CountTables As Integer
Dim CountLinkedTables As Integer
Dim CountQueries As Integer
Dim i As Integer
Dim x As New Collection
Set x = GetTables
For i = 1 To x.count
DataSources.Add x.Item(i)
Me.LB_Sources.AddItem x.Item(i).SourceName & ";" & x.Item(i).SourceType
If x.Item(i).SourceType = "Table" Then
CountTables = CountTables + 1
Else
CountLinkedTables = CountLinkedTables + 1
End If
Next
Set x = GetQueries
For i = 1 To x.count
With x.Item(i)
If .Fields.count > 0 Then
DataSources.Add x.Item(i)
Me.LB_Sources.AddItem .SourceName & ";" & .SourceType
CountQueries = CountQueries + 1
End If
End With
Next
With Me.LB_Sources
If .ListCount > 1 Then
.Value = .ItemData(0)
LB_Sources_AfterUpdate
End If
End With
Me.LBL_Sources_Summary.Caption = _
"Tables=" & CountTables & _
" ; Linked Tables=" & CountLinkedTables & _
" ; Queries=" & CountQueries
End Sub
Private Sub LB_Sources_AfterUpdate()
Dim index As Integer
index = Me.LB_Sources.ListIndex
Me.LB_SelectedFields.RowSource = ""
With DataSources.Item(index + 1)
RecordsCount = DCount("*", .SourceName)
Me.LB_Fields.RowSource = .FieldsString
Me.LBL_Connect.Caption = .connect
Me.LBL_Fields_Summary.Caption = "Fields Count=" & .Fields.count & " , Records Count=" & RecordsCount
End With
Validate
End Sub
Private Sub BTN_None_Click()
Me.LB_SelectedFields.RowSource = ""
Validate
End Sub
Private Sub BTN_All_Click()
Me.LB_SelectedFields.RowSource = ""
Dim index As Integer
index = Me.LB_Sources.ListIndex
Dim i As Integer
Dim FieldsCount As Integer
With DataSources.Item(index + 1).Fields
FieldsCount = .count
For i = 1 To FieldsCount
If Not (.Item(i).FieldType Like "*Binary*" Or .Item(i).FieldType = "Attachment") Then
Me.LB_SelectedFields.AddItem .Item(i).FieldName
End If
Next
End With
Validate
End Sub
Private Sub BTN_Add_Click()
Dim SelectedField As String
Dim FieldType As String
Dim i As Integer
With Me.LB_Fields
If .ListIndex < 0 Then
.Value = .ItemData(0)
End If
SelectedField = .Value
FieldType = .Column(1)
If (FieldType Like "*Binary*" Or FieldType = "Attachment") Then
MsgBox "Attachment and Binary fields not allowed!", vbExclamation, "Invalid field type"
Exit Sub
End If
For i = 0 To .ListCount - 1
If Me.LB_SelectedFields.ItemData(i) = SelectedField Then Exit Sub
Next
Me.LB_SelectedFields.AddItem SelectedField
Me.LB_SelectedFields.Value = SelectedField
If .ListIndex < .ListCount - 1 Then
.Value = .ItemData(.ListIndex + 1)
End If
End With
Validate
End Sub
Private Sub BTN_Remove_Click()
Dim index As Integer
With Me.LB_SelectedFields
If .ListIndex < 0 Then
.Value = .ItemData(0)
End If
index = .ListIndex
.RemoveItem (index)
If index > .ListCount - 1 Then
index = .ListCount - 1
End If
.Value = .ItemData(index)
End With
Validate
End Sub
Private Sub BTN_Up_Click()
Dim index As Integer
With Me.LB_SelectedFields
index = .ListIndex
If index <= 0 Or .ListCount = 1 Then Exit Sub
Dim vlu As String
vlu = .Value
.RemoveItem (index)
.AddItem vlu, index - 1
.Value = vlu
End With
End Sub
Private Sub BTN_Down_Click()
Dim index As Integer
With Me.LB_SelectedFields
index = .ListIndex
If index = .ListCount - 1 Then Exit Sub
Dim vlu As String
vlu = .Value
.RemoveItem (index)
.AddItem vlu, index + 1
.Value = vlu
End With
End Sub
Private Sub Validate()
Me.BTN_Go.Enabled = (RecordsCount > 0 And Me.LB_SelectedFields.ListCount > 0)
End Sub
Private Sub BTN_Go_Click()
Dim fso As New FileSystemObject
Dim fl As TextStream
Dim rs As Recordset
Dim n As Long
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim m As Integer
Dim Path As String
Dim PageSize As Integer
Dim PagesCount As Integer
Dim AnimationType As String
Dim SQL As String
AnimationType = Replace(Me.CB_AnimationType, " ", "")
Path = CurrentProject.Path + "\html"
PageSize = Me.CB_PageSize
Dim x As Variant
x = Split(Me.LB_SelectedFields.RowSource, ";")
For i = LBound(x) To UBound(x)
x(i) = "[" & x(i) & "]"
Next
SQL = "SELECT " & Join(x, ",") & " FROM [" & Me.LB_Sources & "]"
Set rs = CurrentDb.OpenRecordset(SQL, dbOpenDynaset, dbSeeChanges + dbReadOnly)
rs.MoveLast
rs.MoveFirst
n = rs.RecordCount
PagesCount = n / PageSize
If PagesCount > 100 Then
PagesCount = 100
' limit the page to a maximum of 100 to keep the html file at a reasonable size
ElseIf PagesCount * PageSize < n Then
PagesCount = PagesCount + 1
End If
If Not fso.FolderExists(Path) Then
fso.CreateFolder (Path)
End If
Set fl = fso.CreateTextFile( _
FileName:=Path + FileName, _
overwrite:=True, _
unicode:=True)
fl.write HTML_Start
m = 0
For i = 1 To PagesCount
If AnimationType = "None" Then
If i = 1 Then
fl.WriteLine "<div id='page_1' class='page visible'>"
Else
fl.WriteLine "<div id='page_" + Trim(i) + "' class='page hidden'>"
End If
Else
If i = 1 Then
fl.WriteLine "<div id='page_1' class='page visible " & AnimationType & "_in'>"
Else
fl.WriteLine "<div id='page_" + Trim(i) + "' class='page hidden " & AnimationType & "_out'>"
End If
End If
Select Case Me.CB_Theme
Case "Mixed"
Select Case i Mod 4
Case 0
fl.WriteLine "<table class='orange'>"
Case 1
fl.WriteLine "<table class='green'>"
Case 2
fl.WriteLine "<table class='blue'>"
Case 3
fl.WriteLine "<table class='black'>"
End Select
Case Else
fl.WriteLine "<table class='" & LCase(Me.CB_Theme) & "'>"
End Select
fl.write "<thead><tr>"
If Me.CHK_RowNumber Then
fl.write "<th>#</th>"
End If
For j = 1 To rs.Fields.count
fl.write "<th>" + rs.Fields(j - 1).Name + "</th>"
Next
fl.write "</tr>"
fl.WriteLine "</thead>"
fl.WriteLine "<tbody>"
For j = 1 To PageSize
If rs.EOF Then Exit For
If Me.CHK_RowNumber Then
m = m + 1
fl.write "<tr><td>" + Trim(m) + "</td>"
End If
For k = 1 To rs.Fields.count
If rs.Fields(k - 1).Type = dbBoolean Then
Select Case Me.CB_Booleans
Case "CheckBox"
If rs.Fields(k - 1).Value Then
fl.write "<td><input type='checkbox' checked></td>"
Else
fl.write "<td><input type='checkbox'></td>"
End If
Case "Toggle"
If rs.Fields(k - 1).Value Then
fl.write "<td><label class='switch'><input type='checkbox' checked><span class='slider'></span></label></td>"
Else
fl.write "<td><label class='switch'><input type='checkbox'><span class='slider'></span></label></td>"
End If
Case "Radio"
If rs.Fields(k - 1).Value Then
fl.write "<td><input type='radio' checked></td>"
Else
fl.write "<td><input type='radio'></td>"
End If
Case "Yes/No"
If rs.Fields(k - 1).Value Then
fl.write "<td>Yes</td>"
Else
fl.write "<td>No</td>"
End If
Case "On/Off"
If rs.Fields(k - 1).Value Then
fl.write "<td>On</td>"
Else
fl.write "<td>Off</td>"
End If
Case Else ' default True/False
fl.write "<td>" & rs.Fields(k - 1) & "</td>"
End Select
Else
fl.write "<td>" & rs.Fields(k - 1).Value & "</td>"
End If
Next
fl.WriteLine "</tr>"
rs.MoveNext
Next
fl.WriteLine "</tbody>"
fl.WriteLine "</table>"
fl.WriteLine "</div>"
DoEvents
Next
rs.Close
Set rs = Nothing
Dim xEnd As String
xEnd = Replace(HTML_End, "@PAGE_LIFE", 1000 * Me.CB_PageLife)
If AnimationType = "None" Then
xEnd = Replace(xEnd, "@ANIMATION_DURATION", "0s")
xEnd = Replace(xEnd, "@ANIMATION_TYPE_in", "")
xEnd = Replace(xEnd, "@ANIMATION_TYPE_out", "")
Else
xEnd = Replace(xEnd, "@ANIMATION_DURATION", Me.CB_AnimationDuration & "s")
xEnd = Replace(xEnd, "@ANIMATION_TYPE", AnimationType)
End If
fl.write xEnd
fl.Close
Set fso = Nothing
DoCmd.OpenForm "Browser"
End Sub
-
کد کامل فرم Browser
Option Compare Database
Option Explicit
Private Sub Form_Load()
DoCmd.Maximize
WB.ControlSource = "=""" & CurrentProject.Path & "\html" & FileName & """"
End Sub
Private Sub Form_Resize()
WB.width = Me.InsideWidth
WB.Height = Me.InsideHeight
End Sub
-
صفحه بندی دیتا با افکت و انیمیشن در مرورگر وب Data-paging with transitions/animations in We
HTML Module
Option Compare Database
Option Explicit
Public Const FileName = "pager.html"
Public Const Script = _
"<script>" + vbCrLf + _
"const pages = document.querySelectorAll('[id^=page_]');" + vbCrLf + _
"const bar = document.getElementById('bar');" + vbCrLf + _
"const bartext = document.getElementById('bar-text');" + vbCrLf + _
"const clock = document.getElementById('clock');" + vbCrLf + _
"const timeOptions = {year:'numeric',month:'long',day:'numeric',weekday :'long',hour:'2-digit',minute:'2-digit',second:'2-digit'};" + vbCrLf + _
"const n = pages.length;" + vbCrLf + _
"setClock();" + vbCrLf + _
"bar.style.transitionDuration = '@ANIMATION_DURATION';" + vbCrLf + _
"for (i = 0; i < n; i++) { pages[i].style.transitionDuration = '@ANIMATION_DURATION'; };" + vbCrLf + _
"var i = 0;" + vbCrLf + _
"setBar(i);" + vbCrLf + _
"setInterval(setClock, 1000);" + vbCrLf + _
"setInterval(function () {" + vbCrLf + _
"pages[i].className = 'page hidden @ANIMATION_TYPE_out';" + vbCrLf + _
"i = (i == (n - 1)) ? 0 : i + 1;" + vbCrLf + _
"pages[i].className = 'page visible @ANIMATION_TYPE_in';" + vbCrLf + _
"setBar(i);}, @PAGE_LIFE);" + vbCrLf + _
"function setBar(x) {" + vbCrLf + _
"bar.style.width = (100 * (x + 1) / n).toFixed() + '%';" + vbCrLf + _
"bartext.innerText = (x + 1) + ' of ' + n;};" + vbCrLf + _
"function setClock() { clock.innerText = new Date().toLocaleString('fa', timeOptions) };" + vbCrLf + _
"</script>"
Public Const HTML_Start = _
"<!DOCTYPE html>" + vbCrLf + _
"<!-- saved from url=(0016)http://localhost -->" + vbCrLf + _
"<html lang='en'>" + vbCrLf + _
"<head>" + vbCrLf + _
"<title title='Data-Paging with visual effects'></title>" + vbCrLf + _
"<meta http-equiv='X-UA-Compatible' content='IE=edge' />" + vbCrLf + _
"<meta charset='utf-8' />" + vbCrLf + _
"<meta name='viewport' content='width=device-width, initial-scale=1'>" + vbCrLf + _
"<link rel='stylesheet' href='../css/styles.css' type='text/css'>" + vbCrLf + _
"<link rel='stylesheet' href='../css/themes.css' type='text/css'>" + vbCrLf + _
"</head>" + vbCrLf + _
"<body>" + vbCrLf + _
"<div id='progress'>" + vbCrLf + _
"<div id='bar-box'>" + vbCrLf + _
"<span id='bar-text'></span>" + vbCrLf + _
"<div id='bar'></div>" + vbCrLf + _
"</div>" + vbCrLf + _
"</div>" + vbCrLf + _
"<div id='data'>" + vbCrLf
Public Const HTML_End = _
"</div>" + vbCrLf + _
"<div id='clock'></div>" + vbCrLf + _
Script + vbCrLf + _
"</body>" + vbCrLf + _
"</html>"
-
صفحه بندی دیتا با افکت و انیمیشن در مرورگر وب Data-paging with transitions/animations in We
themes.css
table.green, table.blue, table.orange, table.black {
font-family: Tahoma;
font-size: small;
text-align: center;
border-collapse: collapse;
width: 100%;
height: 100%;
background-color: ghostwhite;
}
table.green {
border: 2px solid darkgreen;
}
table.blue {
border: 2px solid darkblue;
}
table.orange {
border: 2px solid darkorange;
}
table.black {
border: 2px solid black;
}
table.green thead {
background-color: green;
box-shadow: inset 1px 6px 12px lightgreen, inset -1px -10px 5px darkgreen, 1px 2px 1px black;
}
table.blue thead {
background-color: blue;
box-shadow: inset 1px 6px 12px lightblue, inset -1px -10px 5px darkblue, 1px 2px 1px black;
}
table.orange thead {
background-color: darkorange;
box-shadow: inset 1px 6px 12px orange, inset -1px -10px 5px red, 1px 2px 1px black;
}
table.black thead {
background-color: black;
box-shadow: inset 1px 3px 3px darkgray, inset -1px -3px 3px darkgray, 1px 2px 1px black;
}
table.green thead th, table.blue thead th, table.orange thead th, table.black thead th {
color: white;
text-align: center;
}
table.green td, table.green th {
border: 1px solid darkgreen;
padding: 3px 2px;
}
table.blue td, table.blue th {
border: 1px solid darkblue;
padding: 3px 2px;
}
table.orange td, table.orange th {
border: 1px solid darkorange;
padding: 3px 2px;
}
table.black td, table.black th {
border: 1px solid black;
padding: 3px 2px;
}
table.green td, table.blue td, table.orange td, table.black td {
}
table.green tbody td {
color: darkgreen;
}
table.blue tbody td {
color: darkblue;
}
table.orange tbody td {
color: maroon;
}
table.black tbody td {
color: black;
}
table.green tr:nth-child(even) {
background-color: #CEE0CC;
}
table.blue tr:nth-child(even) {
background: #95BCE0;
}
table.orange tr:nth-child(even) {
background: #F5D08C;
}
table.black tr:nth-child(even) {
background: #D0D0D0;
}
-
صفحه بندی دیتا با افکت و انیمیشن در مرورگر وب Data-paging with transitions/animations in We
styles.css
html {
width: 100%;
height: 100%;
overflow: clip;
}
body {
background: linear-gradient(#EEEEEE,#6a6552);
}
#progress {
position: relative;
margin-left: 5%;
margin-right: 5%;
width: 90%;
}
#bar-box {
width: 100%;
padding: 4px;
background: rgba(0, 0, 0, 0.25);
border-radius: 6px;
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.25), 0 1px rgba(255, 255, 255, 0.08);
}
#bar {
height: 20px;
border-radius: 4px;
background-color: #252e43;
background-image: linear-gradient(to right, rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0.35));
transition: 1s linear;
transition-property: width, background-color;
box-shadow: 0 0 1px 1px rgba(0, 0, 0, 0.25), inset 0 1px rgba(255, 255, 255, 0.1);
}
#bar-text {
position: absolute;
width: 100%;
text-align: center;
font-family: Tahoma;
color: aliceblue;
text-shadow: 2px 2px 4px black;
}
#clock {
position: fixed;
bottom: 1%;
right: 1%;
direction: rtl;
font-family: 'Courier New';
font-size: large;
font-weight: bold;
padding: 4px;
border-radius: 6px;
color: gold;
box-shadow: rgba(0, 0, 0, 0.25) 0px 14px 28px, rgba(0, 0, 0, 0.22) 0px 10px 10px;
}
#data {
position: relative;
margin-top: 1%;
margin-left: 1%;
margin-right: 1%;
width: 98%;
height: 90vh;
overflow: hidden;
}
.page {
transition: ease-in-out all 1s;
position: absolute;
width: 100%;
display: table-row;
box-shadow: rgba(0, 0, 0, 0.7) 0px 5px 15px;
}
.switch {
position: relative;
display: inline-block;
width: 50px;
height: 20px;
}
.switch input {
opacity: 0;
width: 0;
height: 0;
}
.slider {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: red;
border-radius: 20px;
}
.slider:before {
position: absolute;
content: "";
height: 14px;
width: 14px;
left: 3px;
bottom: 3px;
background-color: white;
border-radius: 50%;
}
input:checked + .slider {
background-color: lightgreen;
}
input:checked + .slider:before {
transform: translateX(28px);
}
.visible {
opacity: 1;
}
.hidden {
opacity: 0;
}
.Fade_in {
}
.Fade_out {
}
.SlideRight_in {
right: 0px;
}
.SlideRight_out {
right: 120%;
}
.SlideLeft_in {
left: 0px;
}
.SlideLeft_out {
left: 120%;
}
.SlideUp_in {
margin-top: 0px;
}
.SlideUp_out {
margin-top: 120%;
}
.SlideDown_in {
margin-top: 0px;
}
.SlideDown_out {
margin-top: -120%;
}
.Zoom_in {
transform: scale(1);
}
.Zoom_out {
transform: scale(.1);
}
.RotateX_in {
transform: rotateX(0deg);
}
.RotateX_out {
transform: rotateX(180deg);
}
.RotateY_in {
transform: rotateY(0deg);
}
.RotateY_out {
transform: rotateY(180deg);
}
.Rotate_in {
transform: rotate(0deg);
}
.Rotate_out {
transform: rotate(180deg);
}
-
1 ضمیمه
صفحه بندی دیتا با افکت و انیمیشن در مرورگر وب Data-paging with transitions/animations in We
برنامه نهایی:
خروجی برنامه یک فایل به نام pager.html است (در فولدر html) که میتونین مستقل از برنامه در هر مرورگری اون رو باز کنین.
یک خروجی نمونه برای تست در این فولدر هست که با هر بار اجرا برنامه با نتایج جدید جایگزین میشه.
و این که فایلهای فولدر css برای نمایش درست نتیجه ضروری هست!
-
نقل قول: صفحه بندی دیتا با افکت و انیمیشن در مرورگر وب Data-paging with transitions/animations in We
نقل قول:
نوشته شده توسط
mazoolagh
برنامه نهایی:
خروجی برنامه یک فایل به نام pager.html است (در فولدر html) که میتونین مستقل از برنامه در هر مرورگری اون رو باز کنین.
یک خروجی نمونه برای تست در این فولدر هست که با هر بار اجرا برنامه با نتایج جدید جایگزین میشه.
و این که فایلهای فولدر css برای نمایش درست نتیجه ضروری هست!
خیلی عالی و ستودنی، واقعا دستتون درد نکنه. :تشویق::تشویق::تشویق:
-
نقل قول: خارج از دستور - پرسشهایی از جنس دیگر
نقل قول:
خیلی عالی و ستودنی، واقعا دستتون درد نکنه
ممنون از لطف شما
لطفا با دقت و کامل همه جوانب رو چک و اگر اشکالی هست گوشزد کنین،
همچنین اگر پیشنهادی در جهت بهتر شدن اون هست خوشحال میشم مطرح یا اگر وقت و حوصله دارین آپگرید کنین.
-
نقل قول: خارج از دستور - پرسشهایی از جنس دیگر
نقل قول:
نوشته شده توسط
mazoolagh
ممنون از لطف شما
لطفا با دقت و کامل همه جوانب رو چک و اگر اشکالی هست گوشزد کنین،
همچنین اگر پیشنهادی در جهت بهتر شدن اون هست خوشحال میشم مطرح یا اگر وقت و حوصله دارین آپگرید کنین.
سلام و عرض ادب
تنها موردی که در حال حاضر به ذهن من میرسه در خصوص پروگرس بار هست که بعد از پایان دور اول و در آغاز لوپ دوم به جای آغاز از صفر به عقب برمیگرده، ولی چون تسلط کافی بر کدهای جاوا اسکریپت ندارم نتونستم کد رو اصلاح کنم.
-
نقل قول: خارج از دستور - پرسشهایی از جنس دیگر
دست مریزاد استاد!
فقط اگه براتون امکان داره یک نمونه هم که دارای دیتای(جدول) HTML باشه و از تغییر تم و افکت های در نظر گرفته شده در فرم Main استفاده کرد قرار بدهید.
ممنون
-
نقل قول: خارج از دستور - پرسشهایی از جنس دیگر
نقل قول:
نوشته شده توسط
amirzazadeh
سلام و عرض ادب
تنها موردی که در حال حاضر به ذهن من میرسه در خصوص پروگرس بار هست که بعد از پایان دور اول و در آغاز لوپ دوم به جای آغاز از صفر به عقب برمیگرده، ولی چون تسلط کافی بر کدهای جاوا اسکریپت ندارم نتونستم کد رو اصلاح کنم.
سلام دوباره
و تشکر بخاطر دقت نظر شما
این پروگروس بار منطق پشتش قدری با کارهای دیگه متفاوت هست:
در جاهای دیگه وقتی یه پروسه رو شروع میکنیم، مقدار بار رو 0 میگذاریم و با هر مرحله مقدار رو تغییر میدیم.
مثلا اگر کلا 5 مرحله باشه مقدار اولیه اش 0 هست، بعد به ترتیب %20 و %40 و ... تا %100 - و دیگه کار تموم و بار هم بسته میشه.
اما اینجا ما قبل از شروع همه کارها رو آماده کردیم و اگر کلا 5 صفحه داریم در شروع کار در صفحه 1 هستیم پس مقدار اولبه بار %20 هست و نه 0.
وقتی در صفحه آخر (5) هستیم و مقدار بار هم %100 هست، مرحله بعدی ما دوباره صفحه 1 یا همون %20 میشه و هیچوقت 0 نداریم.
-
نقل قول: خارج از دستور - پرسشهایی از جنس دیگر
نقل قول:
نوشته شده توسط
amirzazadeh
سلام و عرض ادب
تنها موردی که در حال حاضر به ذهن من میرسه در خصوص پروگرس بار هست که بعد از پایان دور اول و در آغاز لوپ دوم به جای آغاز از صفر به عقب برمیگرده، ولی چون تسلط کافی بر کدهای جاوا اسکریپت ندارم نتونستم کد رو اصلاح کنم.
در مورد این که چرا به عقب برمیگرده:
اگر افکت برای پروگروس بار تعریف نکرده باشیم، این حرکت رو به عقب دیده نمیشه و فقط مقدار بار درجا از %100 به مثلا %20 تغییر میکنه.
ولی اینجا یک transition برای بار تعریف شده (برای زیبایی) و این گذر روی سایز بار هم فعال هست برای همین حرکت رو به عقب دیده میشه،
البته معنی دار هم هست چون واقعا دوباره لوپ ریست میشه.
ولی میشه:
1- نمایش پروگروس رو بار رو با یک checkbox در فرم main بعنوان یک Option در اختیار کاربر قرار داد
2- داشتن transition رو برای پروگرس بار با یک چک باکس دیگه مشخص کرد
اگر اینها مفید هست لطفا اطلاع بدین تا پیاده کنم.
-
1 ضمیمه
نقل قول: خارج از دستور - پرسشهایی از جنس دیگر
نقل قول:
نوشته شده توسط
eb_1345
دست مریزاد !
فقط اگه براتون امکان داره یک نمونه هم که دارای دیتای(جدول) HTML باشه و از تغییر تم و افکت های در نظر گرفته شده در فرم Main استفاده کرد قرار بدهید.
ممنون
سلام دوباره
حتما
من برای تست همه حالت ها یک جدول لینک شده HTML هم داشتم (Customers_HTML)
که در پست شماره 116 هم در تصویر دیده میشه.
اون جدول رو همینجا پیوست میکنم،
چند رکورد اولش اینجوری هست:
<HTML>
<HEAD>
<TITLE>Customers</TITLE>
</HEAD>
<BODY>
<TABLE>
<CAPTION>Customers</CAPTION>
<TR>
<TD>ALFKI</TD>
<TD>Alfreds Futterkiste</TD>
<TD>Maria Anders</TD>
<TD>Sales Representative</TD>
<TD>Obere Str. 57</TD>
<TD>Berlin</TD>
<TD></TD>
<TD>12209</TD>
<TD>Germany</TD>
<TD>030-0074321</TD>
<TD>030-0076545</TD>
</TR>
<TR>
<TD>ANATR</TD>
<TD>Ana Trujillo Emparedados y helados</TD>
<TD>Ana Trujillo</TD>
<TD>Owner</TD>
<TD>Avda. de la Constitución 2222</TD>
<TD>México D.F.</TD>
<TD></TD>
<TD>05021</TD>
<TD>Mexico</TD>
<TD>(5) 555-4729</TD>
<TD>(5) 555-3745</TD>
</TR>
<TR>
<TD>ANTON</TD>
<TD>Antonio Moreno Taquería</TD>
<TD>Antonio Moreno</TD>
<TD>Owner</TD>
<TD>Mataderos 2312</TD>
<TD>México D.F.</TD>
<TD></TD>
<TD>05023</TD>
<TD>AROUT</TD>
<TD>Around the Horn</TD>
<TD>Thomas Hardy</TD>
<TD>Sales Representative</TD>
<TD>120 Hanover Sq.</TD>
<TD>London</TD>
<TD></TD>
<TD>WA1 1DP</TD>
<TD>UK</TD>
<TD>(171) 555-7788</TD>
<TD>(171) 555-6750</TD>
</TR>
</TABLE>
</BODY>
</HTML>
امیدوارم درست گرفته باشم منظور شما رو.
-
نقل قول: خارج از دستور - پرسشهایی از جنس دیگر
نقل قول:
نوشته شده توسط
mazoolagh
سلام دوباره
و تشکر بخاطر دقت نظر شما
این پروگروس بار منطق پشتش قدری با کارهای دیگه متفاوت هست:
در جاهای دیگه وقتی یه پروسه رو شروع میکنیم، مقدار بار رو 0 میگذاریم و با هر مرحله مقدار رو تغییر میدیم.
مثلا اگر کلا 5 مرحله باشه مقدار اولیه اش 0 هست، بعد به ترتیب %20 و %40 و ... تا %100 - و دیگه کار تموم و بار هم بسته میشه.
اما اینجا ما قبل از شروع همه کارها رو آماده کردیم و اگر کلا 5 صفحه داریم در شروع کار در صفحه 1 هستیم پس مقدار اولبه بار %20 هست و نه 0.
وقتی در صفحه آخر (5) هستیم و مقدار بار هم %100 هست، مرحله بعدی ما دوباره صفحه 1 یا همون %20 میشه و هیچوقت 0 نداریم.
سلام و وقت به خیر، ممنون به خاطر توضیحات کامل وجامع.
-
1 ضمیمه
نقل قول: خارج از دستور - پرسشهایی از جنس دیگر
نقل قول:
نوشته شده توسط
mazoolagh
من برای تست همه حالت ها یک جدول لینک شده HTML هم داشتم (Customers_HTML)
که در پست شماره 116 هم در تصویر دیده میشه.
اون جدول رو همینجا پیوست میکنم،
چند رکورد اولش اینجوری هست:
بسیار عالی :تشویق::تشویق::تشویق:
-
نقل قول: خارج از دستور - پرسشهایی از جنس دیگر
نقل قول:
نوشته شده توسط
mazoolagh
در مورد ساعت:
اگر هدف نمایش وقت هست که خود taskbar ساعت داره و نیازی نیست و کار بیهوده ای هست،
اگر هدف زیبایی فرم و ... هست که باز هم کار عبثی است!
اما اگر هدف چالش کدنویسی و محک زدن توانایی و ... است نتیجه اش همین هست که کار بیهوده ایست و بهتره وقتمون رو روی موارد مهمتر بگذاریم.
به هر حال چند راه وجود داره:
1- ساعت flash - که بهتره از اون اجتناب بشه، ولی ده ها طرح دیجیتال و آنالوگ ازش به راحتی در دسترس هست.
2- استفاده از فونت مناسب (بهترین روش)
3- استفاده از html5 در کنترل web browser
اون ساعت که نمونه اش رو فرستاده بودم در اصل یک فایل html بود که همینجا پیوست میکنم
[/CODE]
با سلام
چطوری کانکت میشه به وب بروزر با این کدها نشد یه نوتیفیکیشن زرد رنگ ریسک میده بعد از اجازه دوباره پی ام میده که canvce ساپورت نمیشه
Path = CurrentProject.Path & "\html\clock.html"
Forms!frmMain!wbroclock.Navigate (Path)
-
نقل قول: خارج از دستور - پرسشهایی از جنس دیگر
نقل قول:
نوشته شده توسط
moustafa
با سلام
چطوری کانکت میشه به وب بروزر با این کدها نشد یه نوتیفیکیشن زرد رنگ ریسک میده بعد از اجازه دوباره پی ام میده که canvce ساپورت نمیشه
Path = CurrentProject.Path & "\html\clock.html"
Forms!frmMain!wbroclock.Navigate (Path)
سلام و روز خوش
1- درست در اول فایل html و قبل از هر چیزی (یعنی قبل از تگ <html>) این کد رو بگذارین:
<!DOCTYPE html>
<!-- saved from url=(0016)http://localhost -->
به طور ساده و خلاصه: کد خط دوم به مرورگر IE میفهمونه که داکیومنت شما trusted هست - دقت کنین که کنترل web browser بر اساس IE7 بنا شده!
در نتیجه نوار زرد رنگ رو دیگه نباید ببینین.
2- در بخش head فایل html اینها رو اضافه کنین:
<meta http-equiv='X-UA-Compatible' content='IE=edge' />
<meta charset='utf-8' />
<meta name='viewport' content='width=device-width, initial-scale=1'>
به طور ساده و خلاصه: کد خط اول برای رندر (render) شدن درست کدهای html/css هست که IE7 پشتیبانی نمیکنه،
به این صورت که وب بروزر رو هدایت میکنه که از انجین (engine) مرورگر مدرن edge استفاده کنه (کرومیوم).
==========
برای نمونه:
میتونین فایل pager.html برنامه پیوست مبحث "صفحه بندی دیتا با افکت و انیمیشن در مرورگر وب Data-paging with transitions/animations in We" رو بررسی کنین،
یا
در پست شماره 123 به تعریف html_start دقت کنین.
-
نقل قول: خارج از دستور - پرسشهایی از جنس دیگر
نقل قول:
نوشته شده توسط
mazoolagh
سلام و روز خوش
1- درست در اول فایل html و قبل از هر چیزی (یعنی قبل از تگ <html>) این کد رو بگذارین:
<!DOCTYPE html>
<!-- saved from url=(0016)http://localhost -->
به طور ساده و خلاصه: کد خط دوم به مرورگر IE میفهمونه که داکیومنت شما trusted هست - دقت کنین که کنترل web browser بر اساس IE7 بنا شده!
در نتیجه نوار زرد رنگ رو دیگه نباید ببینین.
2- در بخش head فایل html اینها رو اضافه کنین:
<meta http-equiv='X-UA-Compatible' content='IE=edge' />
<meta charset='utf-8' />
<meta name='viewport' content='width=device-width, initial-scale=1'>
به طور ساده و خلاصه: کد خط اول برای رندر (render) شدن درست کدهای html/css هست که IE7 پشتیبانی نمیکنه،
به این صورت که وب بروزر رو هدایت میکنه که از انجین (engine) مرورگر مدرن edge استفاده کنه (کرومیوم).
==========
برای نمونه:
میتونین فایل pager.html برنامه پیوست مبحث "صفحه بندی دیتا با افکت و انیمیشن در مرورگر وب Data-paging with transitions/animations in We" رو بررسی کنین،
یا
در پست شماره 123 به تعریف html_start دقت کنین.
دست شما درد نکنه از این همه حوصله ومرام :تشویق::تشویق:واگه بخوایم فیت WebBrowser بشه چطور ؟ میشه ازش ایده گرفت برای گزارش سازی کدهای css و html5و js با کدهای vbaدست کاری بشن
-
نقل قول: خارج از دستور - پرسشهایی از جنس دیگر
نقل قول:
نوشته شده توسط
moustafa
دست شما درد نکنه از این همه حوصله ومرام
ممنون از لطف شما
نقل قول:
واگه بخوایم فیت WebBrowser بشه چطور ؟
در html چند راه برای تعیین اندازه ها داریم:
- اندازه گیری مطلق مانند پیکسل px ، سانتیمتر cm ، میلیمتر mm ، ...
- اندازه گیری نسبی که براساس درسد % بیان میشه و میتونه نسبت به ابعاد المان parent ، المان root ، اندازه فونت، ابعاد viewport و ... باشه.
در همین فایل pager.html اگر دقت کنین یک کانتینر اصلی داریم که id اون data هست و همه المانها درون اون هستن
<div id='data'>
داخل data تعدادی کانتینر دیگه داریم (هر کدام برای یک page از pager) که پشت سر هم چیده شدن
ولی هر بار فقط یکی نشون داده میشه - به جز زمان عوض شدن صفحه و اجرای افکت ها
و داخل هر کدون از این کانتینرها یک جدول table برای نمایش دیتا هر page داریم که تم اون رو با یک کلاس class تعریف کردیم
<div id='page_1' class='page visible Fade_in'>
<table class='black'>
...
</table>
</div>
<div id='page_2' class='page hidden Fade_out'>
<table class='blue'>
...
</table>
</div>
حالا برای دیدن چگونگی تعیین اندازه ها در فایل styles.css دقت کنین:
#data {
position: relative;
margin-top: 1%;
margin-left: 1%;
margin-right: 1%;
width: 98%;
height:90vh;
overflow:hidden;
}
یعنی که پهنای اون 98% برابر پهنای parent element (که میشه body) هست،
و 1% از چپ و راست margin داره (که میشه وسط-چین)،
و 1% از بالا margin داره که چون موقعیتش نسبی تعریف شده (position:relative) یعنی 1% از المان خواهرش (قبلی که میشه کانتینر progress)
و قدش هم 90% قد viewport هست.
یعنی وقتی شما اندازه مرورگر رو تغییر میدین،
پهنای کانتینر data همیشه به صورت خودکار 98% پهنای body
و قدش همیشه 90% قد viewport تنظیم میشه.
و برای هر page :
.page {
transition: ease-in-out all 1s;
position: absolute;
width: 100%;
display: table-row;
box-shadow: rgba(0, 0, 0, 0.7) 0px 5px 15px;
}
پهنای اون همیشه 100% پهنای data هست
و برای هر table
table.green, table.blue, table.orange, table.black {
font-family: Tahoma;
font-size:small;
text-align: center;
border-collapse: collapse;
width: 100%;
height: 100%;
background-color: ghostwhite;
}
همیشه اندازه اش به صورت خودکار تمام فضای در دسترس page رو پر میکنه (100%)
یا در مورد کانتینر clock که همیشه گوشه پایین دست راست قرار میگیره:
#clock {
position: fixed;
bottom: 1%;
right: 1%;
direction: rtl;
font-family: 'Courier New';
font-size: large;
font-weight: bold;
padding: 4px;
border-radius: 6px;
color: gold;
box-shadow: rgba(0, 0, 0, 0.25) 0px 14px 28px, rgba(0, 0, 0, 0.22) 0px 10px 10px;
}
با تعیین right و bottom به اندازه 1% از body انجام میشه،
و چون position اون fixed هست اگر قد مرورگر کافی نباشه میفته روی بخش های دیگه
نقل قول:
میشه ازش ایده گرفت برای گزارش سازی کدهای css و html5و js با کدهای vbaدست کاری بشن
دقیقا هدف از این گفتگو هم همین بوده.
شما میتونین هر گزارشی رو که در اکسس ساختنش نشدنی هست رو با این روش بسازین.
در واقع کارهای بیشتری هم میتونین انجام بدین.
اینگونه نیست که فقط برای خروجی (گزارش سازی) استفاده بشه،
میتونین با کنترل مرورگر تعامل دو طرفه داشته باشین و فرم هم بسازین.
این فرم میتونه یک فرم unbound باشه مثل فرم login یا data entry ،
و با صرف وقت و حوصله و کدنویسی حتی میشه از نظر کار مثل فرم Bound باشه.
آموزش ساخت فرم unbound با کنترل وب بروزر و نحوه کار با رخدادهای این کنترل رو در برنامه دارم.
-
نقل قول: خارج از دستور - پرسشهایی از جنس دیگر
نقل قول:
نوشته شده توسط
mazoolagh
دقیقا هدف از این گفتگو هم همین بوده.
شما میتونین هر گزارشی رو که در اکسس ساختنش نشدنی هست رو با این روش بسازین.
در واقع کارهای بیشتری هم میتونین انجام بدین.
اینگونه نیست که فقط برای خروجی (گزارش سازی) استفاده بشه،
میتونین با کنترل مرورگر تعامل دو طرفه داشته باشین و فرم هم بسازین.
این فرم میتونه یک فرم unbound باشه مثل فرم login یا data entry ،
و با صرف وقت و حوصله و کدنویسی حتی میشه از نظر کار مثل فرم Bound باشه.
آموزش ساخت فرم unbound با کنترل وب بروزر و نحوه کار با رخدادهای این کنترل رو در برنامه دارم.
با سلام و عرض ادب، بی صبرانه منتظر پست های بعدی این تاپیک هستم.
-
نقل قول: خارج از دستور - پرسشهایی از جنس دیگر
نقل قول:
نوشته شده توسط
mazoolagh
ممنون از لطف شما
دقیقا هدف از این گفتگو هم همین بوده.
شما میتونین هر گزارشی رو که در اکسس ساختنش نشدنی هست رو با این روش بسازین.
در واقع کارهای بیشتری هم میتونین انجام بدین.
اینگونه نیست که فقط برای خروجی (گزارش سازی) استفاده بشه،
میتونین با کنترل مرورگر تعامل دو طرفه داشته باشین و فرم هم بسازین.
این فرم میتونه یک فرم unbound باشه مثل فرم login یا data entry ،
و با صرف وقت و حوصله و کدنویسی حتی میشه از نظر کار مثل فرم Bound باشه.
آموزش ساخت فرم unbound با کنترل وب بروزر و نحوه کار با رخدادهای این کنترل رو در برنامه دارم.
بسیار سپاسگذارم . فقط کنجکاو شدم با اینهمه مهارت و زحمات چرا تو اکسس و الکترون جی اس نه ؟ وقتی اینهمه مهارت در این سه مورد داشته باشین با ری اکت نیتیو می تونید برنامه موبایل بسازین با نود جی اس یک اند سایت و در یونیتی گیم و ... خیلی کارای دیگه .من خیلی وقتیه که فکرمیکردم اکسس تموم شده است علی الخصوص که الان همچی وب بیس محور شده
-
نقل قول: خارج از دستور - پرسشهایی از جنس دیگر
نقل قول:
نوشته شده توسط
moustafa
بسیار سپاسگذارم . فقط کنجکاو شدم با اینهمه مهارت و زحمات چرا تو اکسس و الکترون جی اس نه ؟ وقتی اینهمه مهارت در این سه مورد داشته باشین با ری اکت نیتیو می تونید برنامه موبایل بسازین با نود جی اس یک اند سایت و در یونیتی گیم و ... خیلی کارای دیگه .من خیلی وقتیه که فکرمیکردم اکسس تموم شده است علی الخصوص که الان همچی وب بیس محور شده
هر چیزی جایگاه خودش رو داره،
اکسس هم مثل اپلیکیشن های دیگه آفیس هیچ رقیب و مشابهی نداره،
و با این اندازه برنامه در حال کار به این زودی ها کنار گذاشته نمیشه.
حتی سی سال هم پیش که اکسس تازه آمده بود و چند رقیب جدی جا افتاده داشت کنار نرفت - الان که دیگه هیچ جایگزینی براش نیست.
ولی چون اکسس یک ابزار هست - و برای حل یک مسئله ممکنه ابزارهای مختلفی بشه استفاده کرد - باید ببینیم در یک مسئله بخصوص اکسس ابزار مناسبی هست یا نه.
-
2 ضمیمه
محاسبات هندسی بدون دانستن یا داشتن فرمول Geometric Calculation
چالش امروز واقعا خارج از دستور هست،
فرض کنید شکل هندسی زیر رو داریم و نیاز هست که:
1- مساحت
2- پیرامون
3- گرانیگاه (یا مرکز جرم)
اونها رو بدست بیاریم (همه اندازه ها به سانتیمتر).
ضمیمه 155774
توضیح این که دایره و مربع درون شکل سوراخ هستن.
گرچه این شکل محاسبات نسبتا ساده ای داره و میشه خواسته ها رو با فرمول های معمولی بدست آورد،
ولی موضوع این هست که در حل این مسئله هیچ دانش هندسه نداریم،
یعنی قرار نیست اندازه ها رو فرموله کنیم و برنامه ای برای محاسبه خواسته ها بنویسیم.
قرار هست یک راه بهتر پیدا کنیم که این محاسبات رو برای ما انجام بده.
برای درک بهتر این که چرا قرار نیست هندسه مسئله رو خودمون حل کنیم،
فرض کنید همین خواسته برای شکل زیر بود (البته اینجا نیست - مگر کسی که علاقه داشته باشه):
ضمیمه 155775
تنها محدودیتی که داریم این هست که باید از vba و از اکسس (یا اکسل) استفاده کنیم.
و مهم این که اشاره به روش کافی نیست!
کدهای کامل حل مسئله و توضیح کارها هم نیاز هست.
-
نقل قول: خارج از دستور - پرسشهایی از جنس دیگر
راهنمایی:
باید autocad روی سیستم نصب شده باشه!